A few months ago I was reading some documentation about the Gamecube that my interest in getting into homebrew was ignited again. I had tried before on the Sega Megedrive but did not get very far beyond a proof-of-concept demo for various reasons. This time I had gained some more experience and got the idea to finally start on recreate a fun puzzle platform game I enjoyed playing years ago called Batterycheck:
Back in 1998 there was a campaign to promote recycling batteries in the Netherlands and part of that was a PC game on CD-ROM you could get if you brought 15 batteries in for recycling. It was based on the same engine as Jazz Jackrabbit 2 and therefore uses the same fileformats for the Tileset, Levels and Sprites. About 10 years ago the game was released as Freeware by the publisher but they removed it after a while. After some digging I found one of the companies that worked on the game and I contacted them. The game is licensed as Creative Commons but I need to ask them which specific version. I did get permission to share their download page where the game is listed but they warned about it getting removed in the future. I posted the link and instructions to download in my other thread (here)
One of my main objectives is learning about games in general but also how various older gaming consoles work. To minimize early frustration caused by mistakes or memory leaks I started prototyping in Python on Linux and after a few weeks I had enough to load the level and scroll around. And after a month or two it was already looking like a game but because it was written in Python it was not exactly "mobile" or portable. The Gamecube and Wii for which I originally wanted to write the game looked very complicated and the NDS was more familiar to me like the MegaDrive.
While the NDS version was working and I implemented most of the menu system on it the low resolution bothered me and other limitations forced me to move over to the 3DS. After a while I had re-implemented most of the Python code in a combination of C/C++ and working playable demo with collision detection was possible with a handcrafted testing level. (I used a few converter tools and the Tiled level editor actually) While it was working I had no real way to debug when something was crashing so I rewrote parts of it so it would run natively on Linux using OpenGL.
Eventually this got so messy I restarted almost from scratch with a super simple demo, just some rotating squares in a circular pattern. Since the OpenGL code looked a lot like what I saw in the Wii and Gamecube demo's I decided to write a simple translation layer that would make the main code portable between the platforms. To keep a long story short...kind of ...this resulted into a game engine that can run on: Linux with OpenGL, Wii, Gamecube and 3DS. I have also started on a port to the PSP and planning on adding PS2 later. Eventually I want to bring the DS(i) back too for the challenge of getting it working.
A few weeks ago I was asked by user @newo why I was "porting" and old game not creating a new one. I thought it was a good question so I took the opportunity to share my reasons and motivation:
It has been asked before but not on this forum and I will try to give my reason for not creating a whole new video game. Since I was little games and computers fascinated me and as long as I can remember I wanted to learn how it was done. You will need artists to create graphics and animations, musicians to create an atmosphere and sound effects and level designers to create fun and challenging puzzles to solve. And before any of these creative people can start you will need a story and a theme for the game. And these are exactly the four things I am not good at to put it mildly. There is one aspect of video games that I am good at which is writing code and combining bit's and pieces to make things work. I can spend weeks researching a topic like "how does jumping work"...and I did just that actually...to learn how that should be implemented. This is what I can understand and what I can do but the creative part of animation and graphics design and music is not. It has taken me over 15 years to get skilled enough to even attempt to recreate a game like this and Batterycheck looked like a good challenge to see how far I could go with this. I started this project somewhere around June this year and I learned so many new things to get where I am now if I had to do the creative part as well I might have given up months ago. This way I have an example to follow and can see exactly how something needs to work.
In technical terms this is also not a port although I can understand someone might see it that way. I do not have the original source code to work with and that is my definition of porting...you need the original source to do that and that's why I prefered to call it a remake instead. I do have plans for additional remake's of other platform games and reusing their graphics to work with my game engine but if at some point I get inspired to learn how to animate things I might create a new game after all.
I have never really blogged before but I think this is the place to post small updates on the project that do not really belong on the various platform specific threads I have started so far. This became a very long first blog post but I have been told that's alright if you got a lot to say
You need to be logged in to comment