A Typo Blaster from the Past

A question on Stack Overflow reminded me of an old university project of mine that used 2 keyboards. After a little bit of digging, I found a video I made. It’s called Typo Blaster:

Fun times. I fail to mention that there is no winning, the words come faster and faster until you eventually get overwhelmed and die.

Asteroid Outpost Update 2012-02-10

Components! I have been working on building a component-based system into AO, and it has been working great. When I was told about components and how flexible they could be, I thought they were really cool, but unnecessary. They are still mostly unnecessary, but they do make for some clean and easy to read code, and I love that about it. I also thought that I would start building a component-based system at the leaves and work my way toward the core of the Entity, but in fact, I found it to be really easy to start at the core and move outward. The Position and Size were the first things to get converted and it went over really smoothly. All of the position and size code was stripped right out of my Entity class and made it instantly easier to figure out what was going on in the Entity. I can’t wait to pull out more components.

Oh, and I also

  • Completely re-wrote the power grid and fixed all of the power grid related bugs in the process.
  • Added floating damage indicators
  • Refactored the event system to get rid of all the delegates and start using Action<T> instead

Asteroid Outpost Update 2012-01-27

Recently, I decided to completely rewrite the power grid code and pull it out into it’s own object. This makes for much cleaner code and a clear separation of duties. It also fixed 4 bugs related to the power grid! Can’t complain about that. After finishing up with that, I was compelled to try this whole “Component-based design” approach that I kept hearing and reading about. I started this transition in the last place I thought I would start: the position and size. The code is looking pretty sexy right now, instead of my Ring class having to listen for move events from my Entity, the Ring can actually just have the same position as the Entity because the position is now a component, and both the Entity and Ring have that component. I’ll post some more on this later, I need to get my project compiling again, lol.

Asteroid Outpost YouTube and Release

I have compiled a YouTube video of some of the gameplay last night. 720p and up is highly recommended to get the most out of the video. Enjoy!

I have also uploaded a new set of binaries that you can download and try for yourself. Disclaimer: There are still loads of bugs, and it’s only barely playable. I would not recommend this download for everyone. I will be trying to provide more of these developer snapshots because they are easy to produce, and allows people to try it out. However, if you do try it, let me know what you think, good or bad.

Asteroid Outpost Update 2012-01-18

Last night, I got the range rings to properly mip-map, added a free-text object that can follow stuff around on the screen at a certain offset, and added an accumulator that can listen to accumulation events then create floating-text that will display a +/- change from the last floating text. That wasn’t a run-on. It looks pretty cool though. Here’s a screenshot:

Asteroid Outpost Floating Numbers

I think they might not work over the network, so that will be first on my plate. Second, I want to package up the binaries and public that in a zip way more often than I have been. It’s dead easy to do, and why the hell not? Thirdly, I want to make a quick YouTube video of what I have right now, bugs and all. Sufista‘s music is fitting the game really well, and I can’t wait to show it off.

Asteroid Outpost Update 2012-01-17

I have been working feverishly on Asteroid Outpost for the past few days. Lots of refactoring to make the code cleaner, but in the process, I’m going to be able to have range rings around structures when you click on them!

Music has been added to the game! I have talked with an artist that I know, and he’s willing to let me use his music in my game. He also presented some interest in helping out with other artistic aspects of the game, I hope it pans out. Here’s a link to Sufista’s website.

When do I pull the source closed? That is a question I have been asking myself for a long time. I have changed the licence on the core project for Asteroid Outpost from the zlib licence to the Apache v2 licence. The change basically means that any further versions of the source that I release can not be used for commercial purposes without my permission. All I’m really trying to do is to prevent someone from using AO as a starting point for their own asteroid mining game. If you are interested in doing something else with the source, or want to use the networking package, or want to use a large chunk of my Entity code, ask, and I shall grant.

Asteroid Outpost Update 2012-01-04

I worked on AO a bit tonight, trying to focus on releasing a game.

  • Created a new model to act as a beacon, designed for the tutorial scenario as an indicator for where to build.
  • Problem: The beacon I made is an Entity, and ConstructableEntities like the LaserMiner are programmed to not build over other Entities, so you can’t actually build over the Beacon, :(
  • I got the Beacon to animate well, and now it looks cool, even though you can’t build on it

Other thoughts: I am hoping to get Asteroid Outpost to a game-like state, then perhaps closing the source for internal development. I have always thought that once AO reaches a certain point, I would close the source and continue to work on new features, moving toward a saleable release one day. I think once I get AO to the point of being a game rather than just an engine would be a good cut-off point. All of the libraries would still be available, but the core game code would be left stale on SourceForge. I plan to pursue artists and look into voice actors in the near future, but as this is a hobby project, I imagine the time-line to be a bit longer than games who have full-time employees. I’m not at the point of quitting my job yet, nowhere close. This will remain a hobby-time project for the time-being.

Asteroid Outpost Update 2012-01-01

Over the holidays, I kept thinking about how nice it would be to call AO a game and not just an engine, as well as taking some hints from the author of Gratuitous Space Battles, specifically his article on how to stay motivated. One of his points is to write down a list of what you did each day, so here is the start of that tradition:

  • Added a mission select screen that gives the option to start the tutorial, or start a never-ending mission.
  • Added a little dot beside the selected menu item on the main menu and play a sound when you mouse over. It looks and sounds very cool.
  • Removed the default health of 100 and customized each Entity to have their own health value. This makes it possible to have fun in the never-ending mission.
  • Researched briefly how to change some of my hard-coded method names that I store in strings. I couldn’t find an easy way right away, so I left that for future refactoring.
  • Modified how the spaceships flock slightly. They should stay together a little bit more now. There is still a slight problem with their course, and I feel it’s due to floating point precision, but it could also be an error in my flocking math.
  • Replaced the two singletons I had with instance variables that get passed around because of a few articles I read on the subject, and the fact that I could see it hurting my code quality over time.

Back to AO

After over a month of playing games (BF3 & Skyrim) and screwing around, I am finally motivated to write a line or two of code for AO. I fixed a issue that caused my AI ships to suddenly stop in their tracks when they were on the same axis as their target. I hope this small change will motivate me to actually get AI waves working and be able to call Asteroid Outpost a game and not just a game engine.

In other news: a handful of people have started to show some interest in applications I have made! :D Exciting! A few weeks ago, a man commented about my Winamp Meta Data application and has since offered me money! How cool is that? Also, a few people have started to use (and report bugs for) TeeVee. Despite the bugs, I am excited that people have started using the application. I use it almost every day. And also, a friend from gamedev.stackexchange has taken an interest in my Sprite Library and may be adding new features to it. So… I’ve been a little high with all of the attention. Thanks guys.

Tutorial Scenario

I started my tutorial scenario over the weekend, and things are going great. I have the first couple steps of the tutorial done, and I the rest should fall into place rather quickly. An eventing system allows for a significant reduction in the coupling, the game knows nothing about the tutorial system. The tutorial system just hooks in to the event(s) of interest and moves the progress forward when certain conditions have been met. It’s great :D