Recreating GBA Fire Emblem in Unity

#1

Here is a link to the github repository although this the the repository I am actively developing from and the game is NOWHERE near playable, but you can look at my ugly code if you so desire

Edit: I just realized putting FE7 tilesets and stuff on my github is a great way to get banned for copyright infringement so i removed all the image files that aren’t mine so the project probably wont run in unity for you, but my scripts are still their if your interested. I’ll probably have to replace all the art for when I actually publish this as I don’t want to catch a lawsuit from nintendo or something. I’ll cross that bridge when I get to it.

So I had a stupid idea to work on over my winter break, recreating the GBA Fire Emblem games in the game engine Unity.

I realize their is youtube videos of this already being done but as far as I could tell nobody has released their code publicly which I plan to do once this project gets to a more finished state. Below is a gif of the progress I have so far (movement is working)

The glitch on the right is because I only have a 10x10 grid placed for testing

Imgur

Would this actually be useful to anyone? I have no idea but I’m having fun working on it so far and don’t plan on stopping until I have a working prototype to publish.

I’m new to feuniverse so i’m just leaving this un-categorized as it didn’t seem there was an obvious fit for this post.

please let me know your thoughts on this stupid project of mine. Also would their be any interest in some videos detailing the technical side of how I am actually implementing all this stuff?

17 Likes
#2

It look cool. I hope something great could be made of this engine.

2 Likes
#3

I’ve taken the liberty of moving this to Resources as a preliminary measure. If you think there’s a better option (say, Projects), just let me know (or move it yourself, if Discourse lets you).

I think this is a great idea! Having more options out there when it comes to making fangames is always good.

5 Likes
#4

It COULD be useful. I haven’t done much hacking, but having different platforms for hacking would mean that there would be different options for people, and it could also fit more data than hacking on GBA.

#5

As long as it actually really releases eventually and does not exist in a weird Limbo like XNA.

5 Likes
#6

Slidey boi

#7

I’ll definitely publish whatever I have done regardless of the state it’s in around January 20th as that’s when I go back to school and won’t have as much time to work on it, although hopefully my schedule won’t be to bad and I can keep making progress.

1 Like
#8

Random 1:00 am progress update but I fixed all the bugs in my previous movement system (I was using BFS to find paths which didn’t always find the best one with terrain so i switched to Dijkstra’s)

Also I implemented the inventory system and items in the back end and thus also got staff and attack ranges working based on the items in the inventory. Hopefully I can get the turn manager and and enemy that can actually make a valid move by the end of this weekend. I’m putting items GUI on the backburner because I hate making menus lol.

I also added a link to the github repository I’m developing from if you feel like looking at my code lol. Once the project is closer to complete I’m going to do a lot of cleaning up so people without much code experience will understand what is going on.

5 Likes
#9

I think the idea is really cool but there was something that bugged me on a quick look through your stuff.

How much object orientated programming do you know? Things like this in your CharacterStats script make me concerned.

public void generateStats(string baseStats)
    {
        if (baseStats.Equals("hector"))
        {
            stats = new CharacterStats(1, 19, 7, 4, 5, 3, 8, 0, 13, 5, .9, .6, .45, .35, .3, .5, .25);
        }
    }

Do you plan on making an if statement for every single character you’re going to have to implement? Hard coding something like stats seems weird because in larger game projects, you’re going to have designers that are less code savvy. Rather than doing putting this here, maybe something like being able to load a CSV with all your character stats data and then loading a row of data based on some input would be better. The designers/chapter developers will be able to modify things without needing to know C#. Here’s a quick pseudocode thing to show you the idea

generateStats(string unitName)
    load characterstats.csv (or if loaded already, access it)
    find row corresponding to provided unitName
    grab data from the row and create your needed objects

With this, the other person can just work from the csv with no need to worry about code. I’ll admit, it seems like kind of a weird concern but early on in the project is the name to fuss about architecture. Refactoring a large code base is a pain in the ass.

The other thing I wanted to point out here is whether you can make your code more generic. The example that stood out to me is this.

public void addIronSword(){
        Add(new Weapon("iron sword"));
    }

Why does addIronSword need to be a method? Why can’t we just have a generic method that adds an item?

public void addItem(string itemName){
    Add(new Weapon(itemName));
}

Making methods more generic like this can cut down on the work you need to do. There’s no need to make a method to add every single item, although maybe you were planning this later anyway.

Anyway, keep at it. This looks cool and I might try fiddling with it later myself. Have you given any thought to how you plan on saving data?

e - this is probably not a big deal but you’re not using C# conventions for code. I don’t think it matters too much (please don’t kill me, compsci dudes) but a quick look at them wouldn’t hurt. Here.

5 Likes
#10

Yeah im just hard coding things like character stats early on for testing purposes I’ll make a better system for creating and storing lots of character data when enough core systems are done that the game is actually playable. Right now my focus is on getting map movement, enemy ai, combat, and other core systems working then I’ll add ease of use tools like creating weapons and characters form csv files without needing code. A lot of the code that currently exists will probably be changed to be more efficient or user friendly by the time i’m actually happy with this project. Once I have core functions finished I’ll take some time to decide on how i’m going to tackle making this engine usable for people without a lot of code experience, but thats difficult to do right now when like 90% of the core gameplay dosn’t exist. Thanks for the advice though tbh I didn’t think anyone would actually dig through my code lol.

Oh Ill fix my coding standards stuff im using Java standard as that’s what im most familiar with and c# is almost identical but there is some differences in the standards. I never actually read the c# standards which is my bad.

5 Likes
#11

Unfortunately the time has come for me to go back to College and spend my time studying for math tests instead of working on a project I actually enjoy, but such is life. I am by no means stopping work on this project but I have other time commitments at school and won’t have as much free time.

In addition to school starting back up, I realize this project is a much more ambitious undertaking than what I initially thought. As pointed out in some previous replies a lot of my initial code was written in way that is hard to understand and is extremely non-dynamic. This is an easy trap to fall into as a sole developer which I quickly found out when trying to redo systems I created fairly recently and ran into trouble. Despite these setbacks which included rewriting how I’m handling turns 3 times, and bugs and issues still existing, I did make some meaningful progress over the last few weeks.

As seen in the gif below, basic enemy rush movement is functioning, waiting and looking at the items in a characters inventory functions, and movement is also functioning properly.

The github for this project will continue to be updated if your sadistic enough to read through my messy code before I clean it up. I realize my development practices are poor and I am still learning. (I’m currently a sophomore in college studying Computer Science)

The only “core” feature missing is combat, and once that is finished I can make a “playable” chapter. Of course I realize there is a ton of features missing, but once I reach the “playable” state, I will go back, clean up, and generally try to fix this mess of a project.

Thanks for taking an interest in my project. I’ll continue to work on it until it’s something that I’m proud of and will make a more formal release then. That’s all for now

7 Likes