RocketTux: Download and Play Like a Normal Program!

Yup, you no longer need a master’s degree in Compu Fu to play the game! How about that, eh? 🙂

Thanks to the mighty kind folks who created Node JS and NW.js, I was able to package the open source Chromium web browser along with the game, allowing it function like any other Windows or Linux program. Simply download the zip file, extract it, and run the game from its folder!

20MB of game data, 185MB of web browser based “game engine”…

It’s important to note that I am still very much developing the game, so I have yet to implement all of the features and functionality. That said, I have completed the collecting of coins and items, and all the level themes are unlocked for testing, so there is fun to be had. There’s a video at the bottom of this post where I demonstrate playing this part of the game. If you have a GitHub account, feel free to post any issues you find with the game, otherwise you can share your feedback in an email.

Download and Play
Windows 7/8/10: 64 Bit, 32 Bit
Linux: 64 Bit, 32 Bit
Previous Releases

Installation & Requirements
Download the file for your operating system, extract it, open the created folder, and run RocketTux.exe or RocketTux, as you would any other Windows or Linux program. The game should play well on any recent PC/laptop/Chromebook that has hardware accelerated graphics, 2GB RAM, and a dual core CPU. To give you an idea, it’s a little slow my old Core2 Q8200 quad core desktop that has 8GB of DDR2 RAM and a 1GB Nvidia Geforce 450 graphics card, yet it plays great on my Intel based Chromebooks. See this document for help with running RocketTux on a Chromebook.


Currently I am working on completing all of the level sections for bump up to version 0.5.0, as I just recently completed the sprite sheet (save for room I left for minor details I may find I want later. I can be so OCD…). These are actually really fun and easy to create using the Tiled editor, so time and inspiration are all that are holding up release 0.5.0!

I will create a new download zip file for each major “point release”, while the master branch of the GitHub repository will remain in step with my development. You should be able to clone the repo and build an up to date release at any time, as I intentionally won’t push commit changes that break the game. Along those lines, there won’t be any further changes to the file structure of the game, apart from adding new music and possibly new/different sound effects, so it should continue to “just work” for all of us. Yay! 🙂

Enjoy!

Recent Video:

Older Video:

JavaScript: Flipping 9 Pages of 25 Icons in Groups of 5

I tried to make the title relevant to the general JavaScript programmer, but this is something that I recently had to do for RocketTux, so that will be the context of the post. But, what the heck does that title even mean? Well, have a look at this picture…

As you can see, I have highlighted 5 rows of 5 icons. Those are the 25 icons I needed to manage, conveniently stored in a PhaserJS sprite group so I can easily show/hide them with a single groupName.visible = true/false; and so on. Putting the icons into a single group is WAY easier to manage than declaring each icon as its own sprite, provided one can wrangle the logic involved. Let me tell ya, in this case, wranglin’ these bits was like wrestlin’ an angry bull in a well greased pan! In fact, I found it immensely helpful to break out the o’l pencil and lined paper to sort it all out!

The window is always on the screen, just hidden until the user clicks the button to “open” the window. This allows the initial sprites to be reused by positioning them one time and later simply flipping the “tile” they point to on the sprite sheet. So, when the user clicks the Next or Back buttons, the logic only needs to pull data from tables (arrays) and update some variables. In this case, here is the table of data for what icons are used per group of five icons,

You may notice that there are 45 groups of 4 numbers. That’s because the cost for these 45 different “Cubimals” always involves a certain amount of coins and then various values of 4 other items. That being the case, I don’t need to worry about changing the first icon in each row, so why bother wasting data by having an entry for it in the icon table.

Finally, to fit all 45 of the Cubimals on the screen, I needed to divide them into 9 “pages” that the user can flip through. What the user sees as “pages” are in reality a bunch of mental gymnastics that happen in the background, as you can see in the function below that fills in the data when the window is opened and the back/next buttons are pressed.

By a country mile, the hardest part of writing this function was the management of the //Cost Icons, which are the subject of this blog post. Having a look at how this part of the function works, it basically goes through each of the 25 icons and updates them, with the exception of the ones for the coins in positions 0, 5, 10, 15, and 20. It pulls the correct group icons per Cubimal based on the cubPos in RocketTux.cubCostIcons[cubPos][mod – 1] and individual icons based on mod – 1.

That’s all fine and dandy, but there are some “gotcha ya!”s in there, such as dealing with the fact that we need the 0 position in the RocketTux.cubCostIcons table as well as the rest of the positions. This meant that I couldn’t just do currentPage * cubPos, because the currentPage also starts at 0 – doing this would fill every Cubimal’s item icons on the first page with the ones from the first entry in the RocketTux.cubCostIcons table. That’s no good! Starting currentPage at 1 would complicate the matter of pulling data from the description and quantity tables, while also overshooting the RocketTux.cubCostIcons table length by 1, so I had to work with it as starting from 0.

To fix that problem, outside of the loop I had to put a condition “if the current page is 0, then cubPos should also be 0, otherwise cubPos should be currentPage * 5”, as you can see in the highlighted area below,

With that wrinkle ironed out, the for loop will pull and place the data correctly!

This is the kind of thing that probably seems very simple many programmers, but can trip up we hobbyists. It’s also the type of problem that is hard to find examples for, because it’s woefully difficult to describe and thus equally difficult to search for on the web. Hopefully this post will serve as at least one way a person can do this kind of thing!

Importantly, when you look at the code you can see that the functionality to which I am referring is written in plain JavaScript (as apposed to PhaserJS or another API/Framework), as it’s really just a matter of manipulating tabular data. This means the concepts are applicable to a general audience, which is nice.

Anyway, hope this was helpful!

Ps. Cubimals were part of a game called Glitch, created by Tiny Speck. When they shut down the game, Tiny Speck was kind enough to release all the artwork for the game into the public domain!

Legend of Hondo is Dead! Long Live the Commodore 64!

Life is full of compromises and choices. Given that my time is not infinite, I have chosen to focus my “nerd hobby time” on working with a single computer, the Commodore 64. As a result, here is where my previous projects stand:

RocketTux
Side scroller web based game
Will be finished in 2018-2019. Once finished, I will package it as a native application, using NodeJS, for Linux and Windows. Even though it will not be released as a Chrome App for Google Chromebooks, as it was originally intended to be, I am sticking with the goal of having it play well on a low-end Chromebook (instructions will be provided on how to do so).

Legend of Hondo
Star Wars Galaxies Emulator server mods
Will not see further development. Last fall I was working a huge branch related to Bio-Engineer, which would have been finished were it not so tedious to make BE pet versions of some animals – I bit off a giant chunk of work that I just don’t feel like doing, but the rest of the features for that branch were finished. The plain truth of the matter is that I don’t play the game and it takes way more time/effort to develop it than I want to spend on a game that I don’t play!

Loop Dipole and the Chaoties
Blender Game Engine
Game play wise, it wasn’t fun and that really disappointed me so I took a step back from it for a couple years. BGE also proved to be overwhelming to work with after the project grew beyond a certain level, so I will not be finishing this iteration of the game. However, the initial concept of “go fast and have fun getting there” and the rest will be the basis of a game that I make for the Commodore 64 once I have become skilled with Assembly language.

Rescue Girlies
SDL / Supertux mod
I have not updated this game since 2014, just as I said I would not when I released the custom GPL version of the game. It was a “one off” game that truly I made only for my kids, but I released to the open source community as a way to give back some of my knowledge. Play it if you’d like or study the differences between it and SuperTux 0.3.3 for an idea on how to make such mods.

Solozeroth
World of Warcraft Server Emulator mods
Yeah, I don’t really play this one either, so I haven’t bothered working on it in about a year now! Wrath of the Lich King era was the best, but it’s kind of boring to play solo. That said, the TrinityCore server code base was a pleasure to use!

Tux Time, by Fives
Web based educational game
I really wish I finished this game, but for a while there my girls did use it on the tablet to help them learn how to read a good old analogue clock. All that is missing are the voice overs and the sound setup, so I will post the source on Github, but I will not be developing it further.

SuperCombiner
Torchlight II Mod
I occasionally play Torchlight II and when I do, I use this mod. It still works and I’m content with its features, so it doesn’t need any further development. Along those lines, Torchlight II itself, with the handful of mods I have downloaded, is also fine the way it is so I won’t be creating any other mods for it.

Music Production
Sunvox and Impulse Tracker on PC
I don’t spend a lot of time tracking music anymore, but I will continue to do so when the mood strikes. The sound produced with these systems is completely different than what I will be creating with the Commodore 64.

Electronics Hobby Computer Prototype
Arduino UNO programmed using a Raspberry Pi Zero
I very much would like to build this prototype, but it seems like a frivolous use of our limited discretionary funds and it likely will not be produced. The major expenses are a basic “ten keyless” usb mechanical keyboard ($35 CAD), the 4″ LCD display ($40-$70 CAD), and misc electronic bits (??$$ + shipping…). I estimate the prototype would cost about $200. If I can scrape together the parts, I’ll totally build this a little bit at a time as a proof of concept, “just because”. 🙂

I would like to thank everyone who encouraged me to work on these projects over the years, especially the supportive folks in the SWGEmu server modding community and the world of kind people who contributed to the open source projects upon which my own projects were based.


My game plan for the future consists of the following,

  • Work through the Commodore 64 Programmers Reference Guide, using a real physical book even!
  • Learn everything there is to know about the Commodore 64 hardware and software!
  • Share my Commodore BASIC programs on GitHub in text format.
  • Share my open source games/software in disk image format using Google Drive.
  • Learn how to program EEPROMs and make cartridges.
  • Make a game that is worth selling and distribute it on cartridge – how cool would that be!
  • Try to make an Arduino UNO compatible electrical system that can be programmed using BASIC.

If you’d like to listen to me talk about this sort of thing for 24 awesome “stream of consciousness” minutes, have a gander at the video below! If not, suffice to say that I am making this change of focus so as to get the most return on my “time spent doing things” investment, while also increasing the likelihood that the things I create may actually be of use (perhaps even after I kick off and walk the stars!).

RocketTux: My Development Workflow

RocketTux is a web browser game based on the Phaser JavaScript/HTML5 framework, consequently the overall process of making the game isn’t the subject of detailed online tutorials. To fill in this gap, I decided to make the following video that demonstrates my general workflow when developing the game.


RocketTux is developed using an AMD FX-8320 based x86 64Bit PC running Linux Mint 17.3, using the following software:

Google Chrome (Runtime/”Engine”)
Phaser (Pixi) JavaScript framework
SlickUI framework
GIMP (graphics)
Tiled (level section layouts)
Audacity (effects and sound editing)
Sunvox (music production)
Git/GitHub (version control)
Based on artwork from SuperTux and Glitch.

You can download the source code and read the documentation on Github.

Introducing… RocketTux!

I’ve been working on this open source, HTML5/WebGL game since the spring of 2017. I had planned on being much further along with it by now, but I got distracted by other projects… Anyhow, it has actually been in a playable state for a while, so I thought it was high time that I added it my website!

You can read more about it on the RocketTux page under the “My Games” menu option or just click this link to visit the page. All the links and details are there, including a video walk through of the game.

Enjoy!