DevBlog: Working on exciting new features

Over the last few weeks I have ported my game engine to: PlayStation 2, Wii U and Nintendo Switch. Technically the PS2 was already done in august 2018 but I did not release it back then. The switch version is also done basically but I did not make a public release yet. And I have actually fixed the SFX bug in the WiiU version weeks ago aswell...so why no updates yet? There are a couple of reasons for that actually.

In the last release of Preview v0.3 on the Wii, GameCube and 3DS I have included my own "installer". It can unpack the required game files from the BatteryCheck setup.exe right on the respective console without needing to run it on a Windows PC. This was the result of a three month reverse engineering attempt of the Setup.exe to see how the files are stored and unpacked. It's working really well and for new users this is a great advantage and convenience right? Well...the three new platforms do not have that installer yet! (only the WiiU can run the Wii installer from vWii technically, but it's not exactly the same in my opinion.)

The second reason is that I have been working on adding a new gameplay element to really improve the experience and give something new to do. Right now in my version none of the machines actually work and there are no batteries in the holders at all! The original game has empty batteries in them at all times, and these can be replaced to activate a machine. It depends on the machine for how long it will last but in all cases it's required for a puzzle element to help you advance in the level. Whether that is a belt that makes you move and run faster, an elevator that starts moving, pumping water into another pool, opening a door (green or purple cruscher's) they all need power from the batteries you collect around the level!

The first step was to add the animation that replaces the batteries and that is nearly there. Even though that animation is just a few seconds it does have A LOT of frames and using my current method of manually placing them into a texture does not help speed this up at all. :shy: I have been looking into automating this and there are many possibilities but they require rewriting most of the stuff I already have. I am going to do it one day but I need to make the right choice so I don't have to redo it again in the future!
One of the things I have been looking at is something called "sprite dicing" and what it basically does is split an animation frame up into smaller blocks (or tiles) and then in the next frame it will look if that block already existed in the previous one. If a large part of the image does not change between frames this can save A LOT of space on a texture and in VRAM. At the moment every single frame of animation is stored in it's full size, including empty space! It's quite wasteful actually. But using this technique requires me to rewrite my texture generation and rendering to make it still work fast and smooth! :)

The other thing I have been waiting for is proper permission from the original owners of the game! I have send them an e-mail about my project and what I have been doing on all the game consoles so far. Since they needed some time to ask the right people it took a while to get a response....but....I got permission to continue!!! yaay! :yay: There are a few requirements and conditions to work out off course but it all sounded reasonable to me. One thing is they requested me not to mention their name anymore...which is why I am not doing so right now. :D They like to receive updates every couple of months on the progress and how many times it's played. Ehm...well I don't collect that data but I do have download statistics from the forum posts....sort off. So I created my own script to login to GBATemp, go to the relevant pages and scrape the information. (hopefully if an admin reads this and things this is against the rules please let me know if there is another way. :wink:)
It is fun to see the thread view statistics go up in the few days that I have been collecting these stats now. Even the downloads of my previews goes up a tiny little bit. It's to early for any graphs but I am glad the tool I am using for this "Selenium with Python" is able to do everything I needed and save it into a JSON file. And because the script is logging in as me the the view count is not increasing at all :wink:
Code:
Threads:
  BatteryCHeck - WII          14384
  BatteryCheck - GameCube     286
  Batterycheck - 3DS          5988
  BatteryCheck - PS2          2292
  BatteryCheck - WiiU         1475
  Batterycheck - PSP          3142
Files:
  preview-batcheck-wii-v0.1.dol.zip               114
  batterycheck-gc-preview-2.dol.zip               121
  batterycheck-wii-preview-2.dol.zip              126
  batterycheck-wii-preview-v0.3.zip               109
  batterycheck-gc-preview-v0.3.zip                103
  batterycheck-wii-v0.3.4-ALPHA.7z                6
  batterycheck-gc-v0.3.4-ALPHA.7z                 3
  batterycheck-3ds-preview-2.3dsx.zip             196
  bc_setup.3dsx.zip                               77
  batterycheck-3ds-installer-v0.3.zip             84
  batterycheck-3ds-v0.3.4-ALPHA.7z                7
  batterycheck-ps2-v0.3.2-ALPHA.elf.zip           21
  batterycheck-ps2-v0.3.3-ALPHA.zip               17
  batterycheck-ps2-v0.3.4-ALPHA.7z                20
  batterycheck-wiiu-v0.3.6-ALPHA.7z               20
This output is actually generated by a second script that uses the JSON file as input, but it is the important information I wanted to see. I have been thinking about releasing the next version in the download section but I might do that only when the gameplay is more complete. So that might take a few month's (or years :rofl2:) before that's happening.

And that is not even all of it yet, hahaha:rofl2: I have been talking on the Jazz Jackrabbit 2 discord server too for a couple of weeks now and they know BatteryCheck there, since it shares the game engine with Jazz2, they might be more impressed with Jazz2 levels running on game consoles. So I am going to work on a little demo that loads a Jazz2 level and you can run around as Jazz. The physics and character are completely different from BatteryCheck so it's a great challenge to see if my implementation of the game engine can handle it! It's also a good way to clean the engine source code from anything specific to BatteryCheck and make it truly universal!

One of the things I really want to implement before any next version is released is "Parallax Backgrounds"! Yes it's a minor feature and if done right you will barley notice it's there! In BatteryCheck it's used for small black elevators that are moving up on their own and they also move as you walk. This gives an extra perception of depth that is currently missing from my previews! In Jazz2 they are sometimes so complex that without them the level looks completely different! or broken!
This is what I have been working on the last few nights I was working on the game, trying to get this right but it's really, really, REALLY difficult! :rofl2: Drawing the backgrounds is quite easily as they are made up of tiles just like the once you walk on but they are on a different layer that does not interact with the player. It's purely a decoration that is added to show behind the player or in the foreground. BatteryCheck has only a "simple chain" fore ground and I have noticed that this is actually giving an idea of where you are in the level as you come below the starting point and you see it again. These layers have a couple of settings that specify the speed they should move at and if they move automatically or not. There is also an option...and this is the one that gives me the most headaches....that will "tile" the layer in horizontal or vertical directions. or both! This means that a smaller background layer is repeated over and over again through the entire level, but keeping in mind it's speed, autospeed, and current position of the player!!!! There is so much math involved it really goes beyond me at the moment! I did get a sample code on the JJ2 discord and that made it a lot better, but the tiling is still something I need to figure out! I have a video of how it looks but it's not allowed to attach it to a blog post it seems :wink:

And I just remembered that the latest versions for GameCube and Wii are actually a little broken...might need to look at that too and make v0.3.8 work the same on ALL current platforms: GameCube, Wii, Wi U, 3DS, PlayStation 2, Switch! And they ALL need to have at least a text based installer to unpack "Setup.exe" and "BATTERYCHECK.ISO" directly on the console!

So that are a few of the things I have been working on. Thanks you and until next time :D
  • Like
Reactions: 2 people

Comments

There are no comments to display.

Blog entry information

Author
Archerite
Views
221
Last update

More entries in Personal Blogs

  • 4: Reddit
    Finally, number 4! Never thought this day would come, did you? Uhh...
  • books
    1. I am cool as hell, have one million dollars 2. I am banned from...
  • Syncthing is fun!
    Having been kinda active in an Android forum I quickly got sick about...
  • Feeling at home here
    Not much to say this time. I'm depressed. Like almost always. Trying to...
  • I'll start, rate mine 1-10
    It's a very mixed bag, some rock, some rap, some video game music, a...

More entries from Archerite

Share this entry

General chit-chat
Help Users
    K3Nv2 @ K3Nv2: If the game has a crack sure