Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Final Fantasy VI SDK - Going Social!

Final Fantasy VI SDK

Version:Alpha 4.0

Stay in touch, ask me anything, receive updates and try out the lastest versions!


Latest News
Final Fantasy VI SDK On Social Networks
Want to stay in touch and receive more frequent update son the project? Maybe you just want to say hello or ask a question? Now you can!
The Final Fantasy VI SDK now has a Facebook and Tumblr page along this thread and it's recent Sourceforge page!

Read this post for more information.

Final Fantasy VI SDK now on Sourceforge.net
Project Details
Introduction.PNG



The Final Fantasy VI SDK is a starter development kit for RPG Maker XP.
The goal of this SDK is to provide all the default systems from Final Fantasy 6, including a complete database, audio/graphical resources and new RGSS scripts.

Production History (as of September 2013)

Alpha 1 (2006-2007)
The very first iteration of the Final Fantasy VI SDK.

Starting with close to no programming knowledge, the original idea was to make and gather RGSS scripts made by the community in order to provide a base for creating Final Fantasy VI fan games. This phase didn't last long as I quickly realized that gathering various scripts made by many different people was not ideal to provide a homogeneous SDK. The first incarnation was using RGSS1 player and library. Two demos (inadequately named "Beta version xyz") have been released to showcase some features.

Alpha 2 (2007-2009)
The second iteration of the SDK.

Starting from the idea that the SDK should be modular and compatible with both RPG Maker XP and other scripts, this version introduced the concept of modules (using the RMXP SDK), affecting the core structure of the SDK. The second iteration brought many more new features and, later in its development cycle, was ported to RGSS2. This version had a demo released (also inadequately named "Beta version xyz") to showcase some of the new features and RGSS2 capabilities within RPGXP. The code of Alpha 2 included new and modified RPG Data classes, such as RPG::Esper. This is when I first had the idea to create an editor. A prototype of the editor, made as an RPG Maker XP game, was released but never saw completion mostly because RPG Maker XP was ill suited for creating complex editors/GUIs.

Alpha 3 (2009-2011)
The third iteration of the SDK.

At that point, I had gathered enough programming knowledge and felt confident that most of the code could and should be revised. During this process, I realized that the RMXP SDK was too cumbersome and was forcing me to write my code in a way that was not suiting me, so I got rid of it. Doing this changed, again, the core of the code and I also decided to drop the idea of modules along with the RMXP SDK. No open version of this iteration was released, but there was still progress being made. An encrypted gameplay demo was released, recreating the first 10-15 minutes of the game to show how close to the original game the SDK could get. During this production phase, a lot of time was spent in researching a solid way to create an easy to-use-editor for the SDK. Another editor prototype (The Esper Editor) was released a few months before the gameplay demo. This was the first time that serious efforts were put in the development of an editor for the SDK. This prototype was also coded in Ruby (wxRuby) and was being worked on for almost 2 years.

Alpha 4 (2011-Present)
The fourth and current iteration of the SDK.

While revising the code for Alpha 3, I realized again that the entirety of the SDK (including the RGSS1 code that was present and supported at this time) could still be improved to better reflect the goals and quality standards I expected of the SDK. A big decision was made to restart everything almost from scratch, now with the idea to entirely drop the support for the base RPG Maker scripts, rewriting almost all of the RGSS code. At that point, the goal was to separate the SDK from RPG Maker as much as possible so that it could become its own independent program. The same was done for the editor but for another reason. wxRuby was not powerful enough to provide a professional looking Editor, so I started looking for alternatives. This is when I started learning C# which is now the language in which the editor is being developed. This version of the SDK is being developed using RGSS3.

Plans for the future.

There is no official release dates, but one thing is sure, I will not release Alpha versions anymore. The plan for upcoming releases is to provide a real Beta and feature complete version of the SDK, mostly meant for programmers who are comfortable working without an editor. Later on, the Final version will be released along with the editor, without "Programmer Helper Code" (ruby code that helps programmers develop with the SDK without any tools). More information will be available in due time. As I am also learning C++ and OpenGL (mostly for writing custom and faster graphics function for the SDK such a Mode7), I might eventually try to write my own game player to entirely drop the dependencies on the RGSS Player and Library.

Technical.PNG


This project started being developped on RPG Maker XP using RGSS1 as a base for programming. Now it is running on the latest version of RGSS3 but is still being worked on in the RPG Maker XP editor. Below you will find more technical details about the Final Fantasy VI SDK and also a list of tools that I am using along with RPG Maker XP.

RGSS Library: RGSS300.dll / RGSS Player 3*
Resolution: 512x448
Tools used:
  • FF3 Editor by Yousei
  • Map Editor by Omega45889 and Giangurgolo
  • Multi Editor by Lord J
  • RAM Editor by Gendou
  • Save State Editor by The_Fake_God
  • Sprite Editor by Terii Senshi
  • Weapon Tool by Unknown Author
Documentation:
  • Algorythms by Terii Senshi and Master ZED
  • Spell Algorythm by Unknown Author
  • FF3 ROM Info by Yousei
  • FF6 Dissasembly by Imzogelmo

*The SDK is using the newest RGSS Player and Library (RGSS300.dll and RGSS3 Player) from RPG Maker VX Ace. However, the SDK itself works only with RPG Maker XP.

Screenshots.PNG


This section is dedicated to various media such as images and videos of the SDK. Because an image is worth a thousand words.









http://www.youtube.com/watch?v=BEOa7LsxA7Yhttp://www.youtube.com/watch?v=MRED92-Jsqc

Downloads.PNG


In an effort to be as transparent as possible during the development of this project, I have decided to upload the project on SourceForge.net.
From there, you can subscribe to the project and stay informed of any changes at any time. You are also welcome to test the SDK to find bugs, errors, crashes, etc. and open Tickets to help me fix all of these as fast as possible!

Final Fantasy VI SDK on Sourceforge.net
Read this post for more information!


FAQ.PNG


If you have any questions about this project, you can first start by reading this FAQ to see if your question has already be answered.
If you can't find the answer you were looking for, feel free to ask it directly in this thread! I am always happy to answers any questions!

Q.Is this meant to be a remake, a fangame or a utility?
A.It is a Starter Development Kit. It?s a tool/utility to help people create FF6 fangames/sequel/prequel or whatever you want.

Q. Will you include resources from FFVI with the SDK?
A. Yes. I'll try to provide as much resources as possible.

Q.In the battle system are you going to have the characters special skills, like Steal or Blitz, or are you going to have it were people can assign the skills in the positions like you can do with Gogo?
A.In the editor, you'll be able to choose and create actor's battle commands. All FFVI Battle Commands will be included. You will also be able to tell which actor can customize its own battle commands like Gogo.

Q.Once you get everything done, like the battle system and Menu, can you send it on over to me?
A.I'm not "sending over" anything but I will post updates on Facebook, Tumblr, SOurceforge and the official HBGames.org Thread.
Facebook: https://www.facebook.com/finalfantasyvisdk
Tumblr: http://sboutin4.tumblr.com/
Sourceforge: https://sourceforge.net/projects/finalfantasyvisdk/
HBGames.org: viewtopic.php?f=316&t=10208

Q.How much longer till it's done?
A.I can't say. It depends on how many hours a week I spend on it.

Q.What's the font you're using?
A.I'm using my own fonts, made with Font Creator 5.6.

Q.Any chance I can get the font that this uses?
A.All the required fonts will be included with the SDK.

Q.Are you going to add some extra features from other FF games like jobs, casinos, card games, limits?
A.No. Since it is a FF6 SDK, the only "extra features" I might add are features from FF6 Advance.

Q.Are you programing the spells too? Such as Float, Reflect, ect.?
A.Sure, every spells, battle commands, item effects will be included.

Q.Do you have Mode7 working?
A.Yes.

Q.Will you port the SDK to Rpg Maker VX?
A.No, I'm not planning to port it to VX or VA Ace.

Q.If one were to want the Colluseum script you're using. Would you be able to use it without the rest of the SDK as a single script to put into another project.
A.The short answer: No, you won't be able to get things out of the SDK that easily, unless you are a programmer you know what you're doing.
For the long answer: viewtopic.php?p=610748#p610748

Q.Is this project still alive?
A.Yes!

Credits.PNG


I cannot take all the credit, there is so much I could not have done by myself.
This is why I have dedicated a section to thank people that have contributed to this project, either directly or indirectly.
To all of you, THANK YOU!!!

Programming:
  • RMXP SDK Team
  • MGCaladtogel
Graphics/Audio Rips:
  • ama55
  • Avadan
  • Celes_Cole
  • Kuri$u
  • Kururu
  • Mortenkein
  • xenometal
FF3/6 Tools and Technical Informations:
  • Assassin17
  • Gendou
  • Giangurgolo
  • Imzogelmo
  • Lord J
  • Master ZED
  • Omega45889
  • sleepydude
  • Terii Senshi
  • The_Fake_God
  • Yousei
 
I think it's wonderful that you're rebuilding FF6's system in RMXP...

...but isn't calling it an "SDK" kinda... erm... what's the word I'm looking for...?

Anyway, looking forward to it. If you need help getting sprites, I'll be happy to help (need an excuse to play through that game anyway...).
 
Your help would be appreciated! And the reason I used the word SDK is because it's a ff6 Starter Development Kit! Doesn't it make sens?? :S
 
Boy I seem to be on a rolling hill of stupidity today. Now all I need is a DURRR emoticon and I'll be all set.

*goes to grab some game genie codes, a ginger ale, and get PSP8 ready*
 
Skyla_Doragono;110874 said:
*goes to grab some game genie codes, a ginger ale, and get PSP8 ready*

I'm glad to read this! Thanks:P
hmmm now its my turn to ask a stupid question. What's PSP8 ?? :-/
 
FF6 is a perfect game. I look very forward to seeing more of this! By the way, put Biggs in brackets beside the name Vicks in the faceset section of the graphics.

Also, why are there "pending" features? You have to add them to make it FF6. Rename it to "un-completed" features if you plan to add them.
 
Kiniko;110882 said:
FF6 is a perfect game. I look very forward to seeing more of this! By the way, put Biggs in brackets beside the name Vicks in the faceset section of the graphics.

If the majority of you want a non-american version of this SDK, I will do it ;)

... I'd like to add a poll for this but it seems impossible :(
 
Indeed. But in fact, i don't mind. Yes, I prefer some names in the japanese version but I won't make this script SDK only for me!
 
I've got a suggestion for implementing the battle algorithms. The big problem with those is it factors player and monster level into the calculations. Player Level is no biggie, you can do that using attacker.level but it'll fail for monsters as you can't define their level.
However, with a bit of work, you might be able to eliminate the use of the ATK stat and transfer its functions to STR, then rewrite ATK to be the actor's level and use the monster's ATK to set its level. I'm not intimately familiar with the algorithms, but that was something that when I tried cloning them for my RPG needed to be worked around.
 
Seeing as I'm native Japanese, I've never actually played any translated/later released FFs, would it be possible to do both?
 

Mac

Member

This should really belong inside New Projects....as its more than just scripts.

Standard Development Kits are a mix of areas and therefore technically classifed as a precustom set up game...unless i'm wrong then please correct me.

I like this idea alot though
 
If I recall correctly, Final Fantasy VI has some wacky stat business going on.

Like, Evade does nothing, while Mblock does everything...255% Mblock makes you untouchable. Vigor has little effect on how much damage you actually do, Speed doesn't do all that much either. Then again, this info is all from a FAQ I read...

Also, don't forgot the good ol' Vanish + Doom = Instant Win...
Speaking of Vanish, are you gonna make a State like it? Or has someone already done it? You know, avoid physical attacks but unable to dodge magic attacks and magic attacks do more damage (I THINK!) and cancel the Vanish state?


And will you make Sketch have a chance of glitching your files? That would be awesome!


Anyway...I'd like to see how this goes. I rather like FFVI, and one of my projects stars Mog from FFVI (the other characters are from different games though)...and it would be neat having a bunch of features and stuff that work like FFVI.
 
Armor King 108;111306 said:
If I recall correctly, Final Fantasy VI has some wacky stat business going on.

Like, Evade does nothing, while Mblock does everything...255% Mblock makes you untouchable. Vigor has little effect on how much damage you actually do, Speed doesn't do all that much either. Then again, this info is all from a FAQ I read...

128% Mblock makes you untouchable I think.

As far as stats go, Dargor/Sol_Fury.

GameFAQs by Master ZED":3hrywdf1 said:
0 Guard

Found at: Narshe (Vicks/Wedge/Terra raid), Vector

Level: 5 HP: 40 MP: 15 Exp: 48 GP: 48

Bat.Pwr : 16 Speed : 30 Hit Rate: 100 Mag.Pwr : 6
Defense : 100 Evade : 0 Mag.Def : 140 M.Block : 0

Steal: Potion, Tonic
Win: Tonic
Morph: Antidote, Green Cherry, Eyedrop, Soft
Morph miss %: 0%

Absorb:
Nullify:
Weakness: Poison

Rage: Battle, Special
Sketch: Battle, Battle
Control: Battle

Status:
Protected against:

Special Info: Human

Regular weapon graphic: Dirk
Special Attack: Critical (Attack LV. 1)

Stats : f0200 Rage : f4800 Sketch : f4500 Control : f3f00
Steal/Win : f3200 Cmd. pointer : f8600 Sprite : 127200

These are the typical stats of any given enemy.
(ff6 stat name = rmxp stat name)
Bat. PWR = Strength (STR)
Speed = Agility (AGI)
Defense = PDEF
Hit Rate = Dexterity (DEX)
Mag PWR = Intelligence (INT)
Mag DEF = MDEF
MBlock = Evade
(The enemy's "Vigor" is randomly assigned between 55 and 63 at the beginning of each fight)

Assuming you will fix the evade bug yourself, you made need to change MBlock with Evasion = Evade, and somehow incorperate MBlock elsewhere (those are the only stats Monsters have in the database).

Additionally, you need the character's level. I made this quick script:

Code:
class Game_Enemy < Game_Battler
  alias prex_ff6algorithms_g_enemy_initialize initialize
  def initialize(troop_id, member_index)
    prex_ff6algorithms_g_enemy_initialize
    @vigor = rand(8) + 56
  end
  def name
    return $data_enemies[@enemy_id].name.split('|')[0]
  end
  def level
    return $data_enemies[@enemy_id].name.split('|')[1].to_i
  end
end

Now you name your enemies as something like Guard|5 and the number after the | becomes the level, easy enough.

I've also gone ahead and done that, and all the algorithms in RMXP, I suppose I can post that for you.

Code:
class Game_Battler
  def damage_effect(attacker, *args)
    if args.size > 0 # Magic Effect
      skill = args[0]
      if attacker.is_a?(Game_Enemy)
        self.damage = skill.power * 4 + (attacker.level * (attacker.int * 3/2) * skill.power / 32)
      else
        self.damage = skill.power * 4 + (attacker.level * attacker.int * skill.power / 32)
      end
      if [2, 4].include?(skill.scope)
        self.damage /= 2
      end
      self.damage = (self.damage * (rand(52)+224)/256) + 1
      self.damage = (self.damage * (255 - self.mdef) / 256) + 1 unless skill.power < 0
      self.damage *= elements_correct(attacker.element_set)
      self.damage /= 100
      if skill.power != 0 and skill.atk_f > 0
        remove_states_shock
        effective = true
      end
      last_hp = self.hp
      self.hp -= self.damage
      effective |= self.hp != last_hp
      @state_changed = false
      effective |= states_plus(skill.plus_state_set)
      effective |= states_minus(skill.minus_state_set)
      if skill.power == 0
        self.damage = ""
        unless @state_changed
          self.damage = "Miss"
        end
      end
    else # Physical Effect
      block = [[(255 - self.eva * 2) + 1, 1].max, 255].min
      if (attacker.dex * block) / 256 > rand(100)
        if attacker.is_a?(Game_Enemy)
          self.damage = attacker.level * attacker.level * (attacker.atk * 4 + attacker.str) / 256
        else
          self.damage = attacker.atk + ((attacker.level * attacker.level * (attacker.atk + attacker.str)) / 256) * 3 / 2
        end
        if rand(32) >= 31
          self.critical = true
          self.damage *= 2
        end
        if self.guarding?
          self.damage /= 2
        end
        if self.is_a?(Game_Actor)
          if $data_classes[self.class_id].position == 2
            self.damage /= 2
          end
        end
        self.damage = (self.damage * (rand(52)+224)/256) + 1
        self.damage = (self.damage * (255 - self.pdef) / 256) + 1
        self.damage *= elements_correct(attacker.element_set)
        self.damage /= 100
        remove_states_shock
        self.hp -= self.damage
        @state_changed = false
        states_plus(attacker.plus_state_set)
        states_minus(attacker.minus_state_set)
      else
        self.damage = "Miss"
        self.critical = false
      end
    end
    return true
  end
end

You need to use the <Game_Battler>.damage_effect method now, instead of attack_effect and skill_effect. To use it properly, if you send it one parameter (a <Game_Battler> object) it will assume an attack.. such as..

target_battler.damage_effect(@active_battler)

And if you want it to be a skill attack, you just do

target_battler.damage_effect(@active_battler, <RPG::Skill object>)


I got almost all my information from:
FF6 Damage Algorithms by Terii Senshi
 
First of all, Thank you everybody for your help.

About the algorithm, every stats are important. I have every algorithm ff6 uses. If you want to know more about that, click here.
It's the same algorithm you mention, Prexus

@Prexus
Your algorithm is interresting, it's almost exactly the same attack algoruthm as ff6. Well, i'm sure that it's the exact same thing! But, to rewrite the whole algorithm, i'll have to add new parameters.

Your enemy level script is nice but wouldn't it be more simple to use Seph's dynamic enemies script?

EDIT:
Ahh nevermind, with your script, level aren't set with the party's average level.
Thanks!

To make the database and algorithm, i'm using Lord J's editors. They gave me every informations I want about enemies, weapons, items, ect.

@shinasura
Making a replica of those systems isn't illegal. If it was illegal, then a lot of scripts here are illegal.

@Razaroic
Yes, i can do both of 'em
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top