A year (and a month) of stuff, oh my

Should I keep prefacing these posts with a nod to how long it’s been since I last posted?

Quite a lot has actually happened since my last post (which is good, since it was so long ago!) This past summer I had an internship doing bioinformatics research at a university. I’ve continued school, and have just begun my final semester (yay!)

In the first half of 2015, some additional engine work went on, mainly adding support for various Android features and fixing/cleaning the code. Some more feature creep took place at the very beginning of the year, but I instituted a new policy on that, and I’ve finally stopped adding crazy features. I have now gone a full year without feature creep. I developed a couple of small projects: Gravity Vector Field, which was basically just me playing with a gravity simulation using vectors, and Scanner, a program that shows sensor readouts for Android devices.

After the first half of the year, work on the engine actually increased. I moved all of my code from Mercurial to Git, and from Google Code to Github, including the engine. I further improved my build system, and all build related scripts and things are now separated fully from the engine/projects. I did a ton of bug fixing and code cleanup on the engine. I also did something I’ve been wanting to do for ages: separated the engine code into its own library, which my projects can simply link against. This was a massive undertaking, but so worth it. My projects are tiny, and compile instantly. Fixes, improvements, new features, etc. added to the engine are available to all of my projects.

During the fall semester, I had to develop a program for a senior project at school, so I decided to start the process of remaking Hestia. I took a different tact from my previous attempts, and came up with a very compact design for the game which I could implement by the end of the semester. I mostly achieved this goal, and the game is now playable, but not QUITE a fun game yet. I am not done with Hestia, and I wrote very good, optimized code so that I could continue off of the new codebase at some point in the future.

Somewhere in the latter half of 2015, I transitioned all of our computers to Linux. The server (which was already on Linux), my desktop, Aneissa’s desktop, and our laptop are all now running Linux Mint. We both still have a Windows drive for games that insist on it, but this is becoming less of an issue all the time. I have wanted to use Linux as my primary desktop OS for years, and I was super excited to finally take the plunge. Several months later, I am still loving it. Other technology developments (aside from my own work) included a new router (replacing the ~7 year old router we had before) and very recently a mechanical keyboard. I got a Ducky One with Cherry MX browns, and it feels AMAZING. I was not at all sure if these things were just a silly fad or what, but I am definitely sold on them now. I am typing this blog post on the new keyboard, and it will probably be a bit longer than it would otherwise have been as a result…

During the Christmas holidays, I discovered that Hubert’s Island doesn’t really run well at all on modern Linux. This led to me updating Hubert to use much more recent libraries (the same ones in my regular build system). Somehow, this led to me deciding one evening to port Hubert to Android, which I successfully did. It doesn’t run as fast as I would like on my own phone, but I have gotten some favorable reports from people with more recent devices. Then, two days before Christmas, Hubert got Greenlit on Steam! This came absolutely out of nowhere from my perspective, but it was really exciting. I therefore spent a good bit of time over the holidays preparing for the imminent Steam release. That’s slated for Feb 3, 2016 @ 3:00pm Central, by the way.

This semester, I am doing another game project for school. The new game is called Cosmic Runner. It’s a 2D, top-down spaceship game, with an arcade-like feel. You are a smuggler, and must move cargo from planet to planet, avoiding pirates and police. You rack up points (and notoriety!), and just try to keep going as long as you can. I began working on the non-design work for the game a mere three days ago, and I already have a ton done! I specifically designed Cosmic Runner to be even less ambitious than my unambitious version of Hestia from last semester, as I had to cut one major feature from Hestia near the end (the formation and control of armies, a critical part of attacking your enemies!)

If I can manage it, I hope to look at Bit Beast again this semester as well. The major update I worked on some time ago is basically complete aside from a few bug fixes. I have kept putting it off, because I have been unable to fix those bugs. I also considered moving the game to my engine, but that project petered out pretty fast. It recently occurred to me that if I took another look, I might be able to fix those bugs (I like to think I’ve learned a thing or two since I last worked on Bit Beast) and finally release that big update (and get Bit Beast off of my to do list!)

Beyond finishing Cosmic Runner (and releasing it commercially maybe?), completing and releasing the Bit Beast update, and releasing Hubert on Steam, I have a couple of options:
1. Continue work on Hestia
2. Develop another fairly conservative game idea I have that involves a simulation of a zombie city (I am honestly not sure if it would be more fun to work on than for other people to play, which is why I haven’t made it yet)
3. Something else… This option is a cop out, but the above two are my favorite ideas as of right now. I do have some other game ideas that are beyond just “wouldn’t it be cool if”, and one of them could also be a good candidate for developing.

I think I will stop typing now, as this post has grown exceedingly voluminous. I know I might already have a problem with typing too much, but it is just so easy to do with this new keyboard!

Apparently this is an annual blog now

So, in my last post I said I’d try to get a post up soon detailing the state of Cheese and Bacon Games. That never happened…

I said I was working on a BBA in Accounting, which remained true until this fall, when I changed over to a BS in Computer Science (with a minor in Mathematics).

Due to all of this schooling, the company has remained pretty boring. I have actually done a ton of work behind the scenes in the past year, but I don’t have anything particularly exciting to share. Some of that work has been simply ongoing “maintenance” of the company (checking emails, updating website software, tax paperwork, etc.), but most of it has been technical stuff. I’ve continued working on the game engine, and officially declared it “done” some months ago. Since then I’ve made a few small projects with the engine, for fun and to test it further. It currently runs on Windows, Linux, OS X, and Android (oh ya, I ported the engine to Android!) I set up a fancy automated build server, so I can give it the project directory for a project, tell it “Go forth and build this” and it takes care of the rest.

So all of the important engine work has been completed. Beyond that, a lot of not-so-important engine work has also been completed. I’m not going to lie to you, I’ve had a good bit of fun developing the engine over the past 6 months or so. There has been some feature creep. In my defense, a lot of this has since proven very valuable. I’ve created some scripts and programs that automate project setup and the like (in addition to the automated build process), and creating a project with my engine is becoming crazy fast and easy.

At a certain point in engine development, I decided to stop keeping Galaxy Chomp and Hestia up to date. Both projects have been on hold for quite a while anyway, and it was slowing me down a lot. Galaxy Chomp is a pretty big question mark right now, and I have no concrete plans to work on it. I might at least finish the gameplay work on it at some point and release it for cheap/free, because SO MUCH of the work is already done there. I still fully intend on finishing and releasing Hestia commercially someday, because I think the design is solid. When that happens, I will probably start coding over from scratch, because honestly with all the engine work that I’ve done since I last touched Hestia, I believe that would save time and effort. Before I think about coding for Hestia, I want to complete its design (its mostly done, but there are a few large gaps that need to be completely thought out).

I have had some ideas more recently for smaller, simpler game projects, but I haven’t done any real work towards any of them. There is one in particular that I’ve thought out and written extensively for, but its design still needs a bit more work. Maybe over the holidays I can get myself to make a (actually, really) small simple game. Either way, I have some more engine ideas that I’d like to implement.

This post has gone on long enough at this point, so I will bid you all a pleasant holiday season (unless you don’t celebrate any holidays at this time of year, in which case: have a good month!)

Random number generation (with graphs!)

So, I’ve been working on the random number generator for my game engine. Over time a number of features crept into the RNG, and it started to grow weird limbs and such. In short, it was ugly to work on, and kind of a pain to use. Tonight I prettied it up and also made its features less gross.

There are two RNGs. One, RNG_Fast, is super basic and really fast, but its results could be randomer. The other is called simply RNG, and uses the Mersenne twister for randomerest results. It is a bit slower, though. Under normal circumstances, I use RNG, because the speed difference is usually negligible, and I prefer my random numbers to be as random as possible. RNG_Fast is actually only used in one place in any of my games right now (streaming world generation in Galaxy Chomp). It is useful when you need to do a LOT of RNGing constantly in-game.

Both RNGs have two main functions. One function just returns a random number between a given minimum and maximum. The other does this same thing, but weights the result toward a given target number. You also specify how strongly the result should be weighted.

Once I was finished fixing things and cleaning up the code, I thought it would be helpful to run some tests comparing all of this. After playing about with tests for a bit, I decided to have it spit out some handy graphs. Without further ado, here are the graphs:

For each graph, a random number between 0 and 99 was chosen 1,000,000 times. The X axis represents the numbers 0-99. The Y axis represents number of results. For the weighted graphs, 49 was used as the target.

RNG (unweighted)

RNG

RNG_Fast (unweighted)

RNG_Fast

RNG (weighted weakly, normally, strongly)

RNG-weighted-weak

RNG-weighted-normal

RNG-weighted-strong

RNG_Fast (weighted weakly, normally, strongly)

RNG_Fast-weighted-weak

RNG_Fast-weighted-normal

RNG_Fast-weighted-strong

As you can see, the differences in results between RNG and RNG_Fast are really quite minimal. My homemade RNG competes pretty well with the Mersenne twister based RNG. In fact, the only place I can see a real difference between RNG and RNG_Fast is the results for normally weighted RNGs.

In almost every test, RNG_Fast is roughly 30-40% faster than RNG. Usually this is going to be an extremely small difference in time spent RNGing, but for Galaxy Chomp the extra speed has proven essential.

I’ll try to get a post up soon explaining what’s going on at Cheese and Bacon Games. I started working towards a BBA in Accounting this fall, so work has slowed a bit, but progress is still being made.

EDIT: Oh dear, due to an unforeseeable error on my part, the normally weighted results for RNG_Fast are a bit off (“normal” weight meant 9 to RNG_Fast and 6 to RNG). So those two graphs should probably be about equal to one another. I suppose that is good news really, as it means my RNG has very similar results to the Mersenne twister one, but it gets them faster.

Progress has been steady, I swear!

Since the last time I posted here, I put a lot more work into my engine framework. I have a whole Linux build system setup, so future games should all easily have both Linux and Windows builds. I also very recently came into a free Mac donated by a generous family member, so I have plans for a Mac version of my engine as well.

A small amount of work was done for a new Hubert patch. Nothing very exciting, but I need to finish that up and release it at some point.

Work on the massive new Bit Beast update was ongoing for a while, but has been on pause for a number of months now. It is essentially in beta status, and I just need to do some further testing/bug fixing before releasing it.

Work on Hestia continued quite rapidly (after I finished porting it into the newer engine) for a couple of months, until January. In January I got pretty sick, and spent a ton of time working on a “for fun” project that was basically just flying around in a spaceship and fighting other spaceships. I steadily added features and refined the flight/combat mechanics until I realized there were the makings of an actual game there. I started working on a design for the new game, which became Galaxy Chomp, a roguelike-like space game. Since that time I have been focusing purely on this, as I think it is a simpler (and quicker) project than Hestia. So Hestia is on the back-burner for a little while, while I work on Galaxy Chomp. I tried an (unsuccessful) Galaxy Chomp Kickstarter back in February. I did manage to get some really good feedback on the project due to the Kickstarter though, and I have since been working on addressing some of the complaints/thoughts that I got. I am currently closing in on all of my goals for another Kickstarter attempt, which include:

1) Fully design the game down to the numbers (a more in-depth design than I have ever done before, again!). This is complete.
2) Implement large chunks of the gameplay mechanics and systems. This is somewhat random, as I have chosen things that are either easy to implement or add a lot of value to the game to focus on. This is complete.
3) Implement anything/everything needed to make the game a Game. Win and loss conditions, and anything needed for them to work. Dying/losing is in, but I need to add in the win condition stuff and some other related things.
4) Have the game procedurally generate some decent graphics. This is done for ships, but I still need to get it working for spatial features (stars, asteroids, etc.)
5) Fully design and implement the UI in basic form (minus polish/prettiness). This is coming along, and isn’t very hard, but it needs a little more work.
6) Get some music (probably just one song) for the game/trailer(s). I am considering paying for some pre-made music for the game. I’ve already got a whole soundtrack figured out, and I really like the direction it is heading.
7) Test/bug fix/tweak a little more. This is obviously ongoing and will be the last thing I work on, after all other points are complete. I want the game to be fairly stable before trying another Kickstarter.

Once all of the above points are done, I plan on trying Kickstarter again. In addition to all of the stuff above, which is about making the game/design more complete and prettying it up a bit, my plans for improving the new Kickstarter’s chances over the last attempt include:

1) Significantly lowering the amount asked for. I was asking for enough to fully support my family over the estimated duration of development. Instead, I am going to ask for the equivalent of a part-time job in funds.
2) Much more information about the game/design. I plan on greatly expanding the existing Galaxy Chomp section of the website with all sorts of information about the game, including lists of items, stats, flavor text, etc.
3) A better video with more gameplay footage + the new music.
4) A downloadable prototype of the game immediately available to everyone.
5) A greater promotional push on forums, websites, etc. The last try was already a much better attempt than the Hubert one, but I want to do even better.
6) More interesting and frequent project updates on the Kickstarter itself. Ideally I would love to start up a daily dev blog or something and post these on the Kickstarter. This might even carry on after the Kickstarter if it seems to interest people.
7) MAYBE a firm commitment on a Mac version. This may have to come later, though.

What has happened the past few months?

I have not been doing well posting here regularly, but oh well.

Since the last time I updated this blog:

Hubert’s Island:
Failed on Kickstarter.
Updated to 1.3, adding cooperative multiplayer.
Went up on Steam Greenlight.
Got its first review (and it was positive)!

Cheese and Bacon Games:
Had its birthday celebration, which of course meant a sale!
Released a trio of Android live wallpapers.

I also got a part-time job (at Dollar Tree) shortly before the last post, but I guess I didn’t mention it at the time.

More recently, I have been working on a pretty massive update for Bit Beast. Here are some teaser shots:

2012-9-30_4.40.6

2012-9-30_4.43.56

2012-9-30_4.44.45

2012-9-30_4.45.35

2012-9-30_4.49.11

2012-9-30_4.52.16

2012-9-30_4.57.53

2012-9-30_5.5.9

Screenshot_2012-10-30-21-48-32

Screenshot_2012-10-30-21-53-42

Screenshot_2012-10-30-21-53-49

As you might be able to tell, Bit Beast is getting some RPG elements. I’m basically trying to add a lot of depth to the systems already in the game, in preparation for adding some new stuff, too.

I’ve also put a lot of time into a fancy new engine in C++ for my computer games. The idea is that by creating a framework of all the code I usually copy and paste around a lot, I can save a ton of time in the long run. So far, I think it is actually going to help.

The engine framework itself is done, and I’ve been working on porting an already-started project into it. That project is planned to be my next game release, and while it still has not been officially “unveiled,” its working name is Hestia. It is a singleplayer/multiplayer networked strategy game in which you take on the role of a god figure. You can create the world at the beginning of the game in cooperation with the other players, use a pre-made map, or have one randomly generated for you. You choose your people and guide them to dominance in the world. Control of your people is indirect, like Dwarf Fortress or Evil Genius or whatever. You can also directly interact with the world through the use of your godly powers, which require worshippers to fuel.

Hestia’s design is pretty far along (much nicer than any other game design I’ve done, probably), the framework is finished, and now I need to finish porting its old code (I had already begun work on it quite some time ago) into the new framework. Once that is finished, I need to review all of the code and make sure it’s up to my latest standards (such as they are). Then I can finally start working on it again. I hope to start by focusing on getting something playable up and running. It is “playable” now, but all you can do is watch your dudes gather resources. I will most certainly be posting more about this game in the near future.

Well, time to juice!

Hubert’s Island Adventure: Co-Op Edition Kickstarter

Ok, I’m pretty much stealing this post from the Cheese and Bacon Games site, but since I wrote it, I think it’s ok:
 
Hello folks! We’ve just launched the Hubert’s Island Adventure: Mouse o’ War: Co-Op Edition Kickstarter project! Our goal is to raise enough funds ($5,000) to be able to add cooperative multiplayer to Hubert’s Island Adventure.
 
There are tons of excellent rewards, and an absolutely compelling video. Go check it out!
 
We will be continuing to update the Kickstarter page throughout the coming weeks, so stay tuned!
 
And of course, please support us if you are interested in the project!
 
If you don’t know what Kickstarter is, or want to know more about it, check out their handy FAQ page here!

Bit Beast sales info

The #BecauseWeMay guys wanted some sales data about everyone’s games, and after figuring it all out I thought I would share my data here, too:

1. Game:  Hubert’s Island Adventure: Mouse o’ War
2. Sales channel and platform:  Other Stores (Indievania), Windows
3. On what date did you add your game to the promotion?  May 27
4. Average number of copies sold per day the week prior to joining the promotion:  0 copies/day
5. Average number of copies sold per day during promotion?  0.14 copies/day
6. Average number of copies sold per day since the promotion ended:  0 copies/day
7. Was the game being promoted anywhere other than becausewemay.com during the sale? Yes, was simply mentioned on my website/social networks

1. Game: Hubert’s Island Adventure: Mouse o’ War
2. Sales channel and platform: Direct from Developer (using BMT Micro), Windows
3. On what date did you add your game to the promotion? May 27
4. Average number of copies sold per day the week prior to joining the promotion: 0 copies/day
5. Average number of copies sold per day during promotion? 0 copies/day
6. Average number of copies sold per day since the promotion ended: 0 copies/day
7. Was the game being promoted anywhere other than becausewemay.com during the sale? Yes, was simply mentioned on my website/social networks

1. Game: Bit Beast
2. Sales channel and platform: Google Play, Android
3. On what date did you add your game to the promotion? May 27
4. Average number of copies sold per day the week prior to joining the promotion: 0 copies/day
5. Average number of copies sold per day during promotion? 20.7 copies/day
6. Average number of copies sold per day since the promotion ended: 9.2 copies/day
7. Was the game being promoted anywhere other than becausewemay.com during the sale? Yes, was simply mentioned on my website/social networks

In addition to that data, I’d like to take a moment to post exactly how well Hubert’s Island has sold so far. It’s pretty bad, but:

Directly through my site, using BMT Micro:
5 copies sold

Through Indievania:
2 copies sold

Bit Beast has sold around 250 copies so far, and sales are still coming in. That’s not a big number, but relatively speaking, it’s huge!

I spent about 12 times as long making Hubert’s Island than I did making Bit Beast. Literally. Just a fun fact!

Bit Beast is out there, among other things

So, several things have happened since I last posted here:

Bit Beast was releasedthe #BecauseWeMay sale happened, and I released a live wallpaper for Android.

The #BecauseWeMay sale was incredibly helpful. Bit Beast had been out for 2 or 3 days without a single sale. I got it in the sale, and sales have been flowing in ever since. As of right now, I have around 200 sales in total. While that is a small number, it’s a huge step forward for me and CaB Games. We’re totally famous now, haha.

Bit Beast has gotten nothing but positive comments so far, so that has been exciting. Oh, and I released a live wallpaper (an animated wallpaper) for Android to see what would happen. It’s pretty cool: it generates a large world (represented by tiles, each of which is rendered as a simple colored pixel), and you can watch it generate it. So far, that has sold 2 copies.

I noticed that a few posts back, I promised to show Bit Beast here. I then promptly forgot and never did. Oops! Thus, without further ado:

ss7

Bit Beast is now in beta

As the title says, Bit Beast is now in beta testing! The game is finished (save one caveat, noted below), and we’re just looking for bugs and such.

The one thing currently unfinished (maybe) is the Bluetooth battle system. The code is finished, except it doesn’t work in my tests. This does not necessarily mean my code is flawed in this case, though. I have two Android devices, but only one with a working Bluetooth radio (the other was unfortunately dropped and busted). I managed to get a version of Android x86 running in VirtualBox, and I even got it to use a USB Bluetooth adapter plugged into the computer. Unfortunately, this USB adapter sucks, and so I am left unsure if my Bluetooth code is flawed, or if I have flawed testing hardware/software. I need either another USB Bluetooth adapter or (preferably) another Android device with working Bluetooth. If you have either of these and live nearby, please let me know! I’ve also got a Stack Overflow question up about this issue located here.

I plan to release the game sometime before the end of May, come hell or high water.

More on Bit Beast

Goodness, I should have posted something sooner. We’ve moved, and that whole process took a bit longer than I had hoped (still dealing with random tasks related to moving off and on).

Bit Beast is still coming along well, and I still hope to meet my semi-conservative release estimate of mid-May. I’ve been playing around with a bunch of Android’s cool hardware features, such as the various sensors and GPS. There are now 3 “mini-games” that make use of these features and allow you to earn bits. You can shake your device in a mini-game measuring jerk (change in acceleration over time), earn bits based on distance traveled as measured by GPS, or by speed as measured by GPS. Those things were fun to play with, and make nice additions to a virtual pet. I know I had one back in the day that could be shaken to earn in-game moneys. I’ve tackled countless other Bit Beast tasks over the past almost-month as well, and my To Do list for the game is steadily shrinking. I’ve got some Android Dev Guide pages I want to read over at some point, and then of course there is testing. If you have an Android device with 2.2 or newer and are interested in beta testing, let me know!

In addition to game making, I’ve been playing some great games lately. A few are:
-Warhammer 40,000: Dawn of War – Dark Crusade
-Tribes: Ascend
-Unreal Tournament 2004
-Unreal Tournament 3
-A number of Ludum Dare entries