Join us on Discord!
You can help CodeWalrus stay online by donating here.

[C and/or/maybe/?/The Game/ Axe] Hinawa Battle Engine

Started by Duke "Tape" Eiyeron, November 25, 2014, 07:51:15 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Duke "Tape" Eiyeron

Hello everyone. I won't introduce again this project I have. Yes? You still want? Okay.
My projects are most of the time remakes or reproducing mechanisms of games I loved. I started programming (on calcs and on Casio) by trying to port Pokémon Gen I battle engine To Casio AFX2.0/Graph100+. I got through some projects in the same branch, but another one (almost finished) stood up : Bust-a-Move. All of them are past. Now, I'd like to program something. A project way more complicated but that could open (at least to me) to new games. I'd like to reproduce for starters the battle engine of Mother 3 and Earthbound.

This battle engine is a semi turn based classic RPG battle engine. You ahve your party, the enemy's. each one decide its actions for the turn and the turn is going on its way. THat could be just a simple project, but here's the tweak in three(four if you count & as one) words : Modularity & Open Source.

Modularity

Modularity means that the engine should be an independant part of bigger projects. Only some functions will be needed to set up the engine and run it. I'm still planning a lot of the structure and having many design difficulties (shmibs will talk of exeprience after reading the first version's C code...) but I want it to be most clear possible to be hackable by everyone who has some good C/Axe programming skills.

Modularity means too OCP (Open/Closes Principe). I' like it to support a event system and scripted IA which could add a deeper experience to the battles. I'd like at least to be able to reproduce all the quirky events of said games (like self-exploding trees at their death, the textbox in [REDACTED]'s battle, etc...) but that's not really a critical feature.

In the end, modularity means grouping the code in modules to be able to swap them. The most important instances of this meaning here are graphism and I/O (and audio? I dreamt of a thing months ago, but that's still a dream T_T). Graphism and I/O code should be engine independant. I'd like to run the engine on computer as well as calculators. For that, lots of think are being spent on how to  split the graphic data from the engine's. that's not an easy task, i.e. Casio FX-9860 are using 2-bits sprites where Black are 1 and 0 White. If someone were to use directly these functions in, lets' say SDL, that won't certainly work unless big ugly hacks are done. So graphism should too be a independant part to be free of using whatever is needed by the target. Same for file I/O or input management. That also brings a problem : where to put the UI? Graphism module? Input Module? Battle Engine?

Open Source.

Before talking about open source, there should at least be source code. The project started on calc with Axe Parser as I only had that at my hand. The code became quickly as unreadable as ancient dwarf arcanes. Forget about reading it, it has little sens to begin with. I ported the knowledge I had on HBE to C and tried to make a clean basis with Casio Fx-9860 in mind. Second failure, I got cold scoled by Shmibs and I realized that if there were more sense to my eyes, it wouldn't be the same for the others.

So now, I'm clampled to wonder and ponder. Ponder the open source from beginning, wonder how the source code should be structured. Ponder the feasability of the project, wonder if I should ask for help as I already tried in vain. I don't want it to be just lost time into a unborn project. I'd like to have better feedback from anyone with enough experience to tell me how parts of the project could be done without being taken as an inexperimented programmer. I'd like to see who are interested into this heavy project and how much they are. I'd like in the end to see one of my game project plan to be achieved with this engine and maybe other people using it.

So at this moment, I store a repository in a GitLab repo. If anyone wants to mess with the few headers I have at the moment, feel free to poke me and I'll make the repo public or allow you to mess around.


So yeah, so much for a simple calculator project. Something that everyone could do, but I want to do it in a way that lot of peoples would be able to help or improve. That's the real meaning behind this project. (That and the fact I'm more and more thinking about a real calc -or not- game behind that.) Thanks for reading it.

At the demand, here is the last prototype version screenshot to date :
** the link was brocen and redirected to NSFW ads. Removed it**
Let's hope that I (or we?)'ll get to something better than that.

edit: p2 removed NSFW link
  • Calculators owned: A lot.

Dream of Omnimaga

I remember seeing this on Omni and Twitter and I'm glad it's still alive. A Mother clone would be nice on calcs. :) Also you should put some screenshots in here. :P
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

Duke "Tape" Eiyeron

Here is a screenshot of the project. As you can see, it's the only thing I made from the refactor. I can't get to something better yet...
Actually, the project even has a document generator set for later. It'll help watching or learning the structure and force me into making documentation as I like docs.
  • Calculators owned: A lot.

Dream of Omnimaga

Oh I meant the old calculator screenshots :P (with the awesome animated battle backgrounds :D)
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

Duke "Tape" Eiyeron

#4
Oh well if you want so I could still add them back but they could fool other people as the result is obviously not the same anymore.

EDIT : Added a TI screenshot.
  • Calculators owned: A lot.

Dream of Omnimaga

Until your edit, after reading your post I got worried you meant that you dropped the TI version >.<. I hope it remains alive. Btw C is possible on the 84+, using SDCC. AHelper0 uses it.
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

Duke "Tape" Eiyeron

Yeah, but how much memory does a C TI program have? 20 KB? I don't even know if that'll be squeezable in a TI. At least i'll do a ligt version for TI, like no events management, with dynamic loading or something in these ideas to got around the 6KB file limit. At this time, the Casio addin weights already 3KB (if I don't count the ~1KB header)... And I just had some sprite blitting routine test.
  • Calculators owned: A lot.

Dream of Omnimaga

I don't remember how much, but AHelper0 was working on an entire TI-OS using C. If he can do a full OS in C then you can probably circumvent memory limits (maybe a Flash APP?).

C isn't ideal for Z80 processors, though, so I'm unsure if it would be as optimized as in Axe.

Also the file limit in ASM was 8 KB not 6 and ZStart gets rid of it.
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

Duke "Tape" Eiyeron

Unfortunately, the accident I had with Manjaro and my portable hard drive made me had to migrate to a x86_64 Manjaro with my laptop's drive. So I have to recompile GCC again.... That's pretty lame but well... So, I wonder if I continue on calc or if I try with a graphical lib like SDML or SFML. In the end, input managment and graphics will be out of the engine, so...

100 posts :w00t:
  • Calculators owned: A lot.

Dream of Omnimaga

Sorry to hear. At first I was scared you lost all your projects or something when I started reading, and I'm glad it's not the case. Good luck with whatever you decide. :)
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

Duke "Tape" Eiyeron

My love for Git saved me! :p Remember kiddos, backup & versionning will save you one day or another, it worth the pain of learning how to do them!
  • Calculators owned: A lot.

Dream of Omnimaga

Indeed. I don't use Git because during my programming days I was "raised" without it and I am not fond of changes, so I stuck to my old ways of backing my stuff up myself. I also remember some people who lost progress about 10 times on calc projects in the past, yet never learned from their mistakes. >.<
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

Duke "Tape" Eiyeron

Or just plainly lose the game itself (the two meanings are intended).  ;)
  • Calculators owned: A lot.

Dream of Omnimaga

Yeah that's what I meant (not the other meaning that just made me lose, though <_<). I once lost an entire RPG project (with hundreds of hours from work) due to lack of backups but back then I had no way to back my files up, so it was out of my control.
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

novenary


Powered by EzPortal