Game development: reducing scope (traffic simulation)

One of the tricks of game development, especially that done by small teams, is reducing scope of each feature or element to a minimum necessary level. It is critical to make efficient use of developers’ time since there is only so many cycles available, and the longer a project goes on the more likely it is to get cancelled or postponed. The more games you get under your belt the more you start to care more about this kind of stuff.

To give an example of this – one of the core elements of my latest game in development is a series of connected roads with cars running through them, a little like what you would see in a modern version of a SimCity-type game. Starting several weeks ago, I experimented with several different ways to implement this “traffic simulation” element in my game.

Initially, I started with the idea that I would use Unity 3D, since that would allow me to show a very realistic simulation of cars moving through a network of roads. I was inspired by the mobile game Does Not Commute, which uses a 3D engine to good effect.

However, after learning a little more about the Unity 3D workflow, I realized I would be spending a big chunk of my time on the graphics and other 3D elements, which would make the core gameplay elements (behavior, logic, rules) take that much longer to do. Though the end result might look quite attractive, I had doubts that I could finish the game on my own if I took this route.

So for the time being I decided to make the game 2D. My next decision was whether I should use a physics engine or not. I’ve been interested in physics engines myself for some time, having made very simple ones years ago, so I decided to download and experiment with a few different frameworks, including Box 2D. In only a few hours, I was able to get some test programs running and there was a surprisingly rich set of functionality for the free frameworks I tested.

But again, I posed the question to myself – do I really need detailed physics simulation? Is having cars collide, spin out of control, and follow a physically accurate path really critical to my game’s core gameplay? While this would be a cool feature, I eventually decided this was overkill, and again reduced the scope of my traffic simulation efforts.

At this point I entered into prototype development, spending my evening hours making a bear-bones traffic simulation where each car was resented with only a handful of properties such as color, location, and speed. I got this working and am now experimenting with different game objectives, and creating stages to see what is actually fun (and challenging) – the most important aspect of any game.

If things go well and I feel I’ve made an entertaining prototype, I can continue to polish the visuals, or even consider going back to 3D. With a proven game idea, the risk for failure would be greatly reduced.

If I had determined that simulating cars as individual entities was not a critical element of my game, I could reduce scope yet again and simulate at a coarser granularity. For example, in the original SimCity game (which happened to be the first game I purchased with my own money), traffic was handled by road-piece granularity, where a stock animation was selected based on the traffic density of that area at the given time. You couldn’t follow a single car around since they would appear and disappear if you looked closely. While a system of roads was important in building an efficient city, tracking an individual car from point A to B wasn’t necessary, and players had more to concern themselves with. Also, I believe the original SimCity was only made by two or three developers. In more recent versions of that series it seems that cars are modeled as individual entities.

I’ll post some more about this project as things progress.

Dokusen: The Art of Domination (iOS puzzle game) — A month later

It’s been a month since I released my latest iOS game Dokusen on iTunes. At first I considered polishing some aspects of the game and releasing an update, but to be honest the idea of developing a new game from scratch is more attractive, so I’ve stared down that path instead. So in a sense you can consider this post a “post mortem” of this game.

At heart, this game was an experiment to see if a bigger focus on visuals would reflect in more popularity in the store. I also spent a much larger chunk of time advertising on net forums, on roughly 20-30 different sites.

From a downloads perspective, my personal goal was to get at least twice the downloads of my previous game. Initially things went great, with the number of downloads from Dokusen in the first two days surpassing those from the first week of my previous game. Unfortunately downloads suddenly decreased after that on the 3rd and 4th days, such that I only reached 75% of my target downloads (to date, Dokusen got 1.5x of my previous game’s count). Though this is a bit of a disappointment, I should look on the bright side because at least things are going in the right direction. The large spike on the first two days is still a bit of mystery to me, since with previous projects downloads leveled off at a much slower rate. Oddly, I got a large majority of downloads those first two days from France.

These numbers are a further confirmation that advertising on net forums is not a great way to pull in downloads. I did, however, get some good feedback on the game’s rules from on a board game forum I posted on, since it shares some elements with Go and Reversi.

A week or two ago I talked to one of the people who informally tested for me, and he remarked that my previous game was much more fun and easier to understand. This was good feedback, though altogether not that surprising since I feel the same way. Ironically, with Dokusen I had tried to build a game that would be popular with others, but not necessarily myself.

For my next game (codename “T.E.” for the time being), I am planning on making something which I enjoy more myself, in terms of both coding and gameplay. I also plan to make a proper tutorial, as well as get more playtesters (please leave a comment if you are interested in helping). This next game is rooted in a longtime passion of mine, and the work I’ve done on it already is more challenging and interesting than Dokusen. I’m aiming for a release in 3-6 months if things go well.

Though I implied this project was mostly done, I am always open to feedback on Dokusen or any of my other apps. If you looking for someone to review your game I am OK with exchanging reviews of your game for mine.

Mobile Game Development: learn your weaknesses and strive for consistent quality in all areas

Having taking a few iOS projects from conception to release on the Apple Apple Store, I’m starting to discover patterns in how I go through the development process. I plan to use this information to tune how I handle future projects, resulting in efficiency improvements as well as a higher quality result, hopefully leading to a larger user count.

I recently became more aware of the stages I go through in a typical project. I start development in what I would call a “creative” stage, where I am thinking of new ideas and enjoying the implementation process, as well as the iterative design that goes along with that. At some point when the project far along enough, I start to feel the need to just release something – what I’ll call the “get it done” stage.  I think this stems from my fear that other things will come up in my life and not have time to finish the project, or that I’ll just get bored of it and quit partway through, similar to why I would be hesitant to start reading a long novel.

The “get it done” stage is dangerous because the remaining tasks are done quickly, with lower quality than things done in the “creative” stage. For example, I usually create my app’s icons near the end of the project, and rush to just get something that looks reasonable enough. This is a bad idea since an icon is an extremely important part of the overall marketing presence of an app, and some people have even claimed changing only a game’s icon resulted in a major change in the download rate. Another example of this is creating a tutorial, as well as general visual polish.

For my next project, I’m going to try to get myself to think more long-term, and not jump into the “get it done” stage until the product is nearly ready to be released with high all-around high quality. It may be appropriate to rush to the finish line if there is a hard release date you are aiming for, for example to coincide with the release with a new OS version. But in cases where no such deadline exists, there isn’t much value in pushing things.

I am not sure if it is an appropriate comparison, but this reminds me of when I used to train in running to shave time off my mile. I measured how long it took for each 1/10th of a mile, and I found I got the best result when I had a good balance between these times. As opposed to having one or two areas where I sprinted and exhausted all my energy, a consistent good speed gave the best result. I feel that app development is similar, in that a consistent push through all areas is the best way to get a well-rounded product.

If I feel like I am too busy to make proper progress on a hobby project, rather than rushing it to release I’m going to try to just take a break. Odds are that I can just continue where I left off, whether it is a week or a month later.

The exception to this discussion is if you are working on your first mobile app or game. In that case I think it’s OK to just get something on the store, since you’ll gain valuable knowledge going through the entire process for the first time. For your second project, you can slow down and properly plan things out using your newfound knowledge. If you are worried about a low-quality app giving you a bad reputation, you can always pull it off the store at any time.

Game Review Web Sites: it’s a dog-eat-dog world

For my latest mobile game I’ve been advertising on many different web sites whose primary purpose is to review and showcase games or apps. It has only been a few days since I did this so I don’t have much data yet, but I hope to eventually post about whether it was worth it to spend my time like this on advertising.

While I was searching for sites to post to, I discovered a few interesting things about this area of the net. Among these was the level of competitiveness between the various sites, and how these harsh conditions make for a pretty high closure rate of such websites. I realized this because roughly one-fourth to one-third of the sites I tried on a list from a few years ago (see this post) were completely gone. Others had changed their name, or began charging for even a basic listing.

I find it intriguing how an over-crowded and hyper-competitive mobile app market ends up creating a hyper-competitive market for websites advertising these same apps. Ironically, these sites have to market themselves using many of the same techniques, via things like SEO and using forums to advertise. Ultimately, all of these web sites must earn enough money to support their hosting and development costs via some form of paid advertising, such as charging for reviews or expedited listing.

The smaller a review site is, the easier it will be to get your app on there, but the less useful it will be because of the smaller amount of traffic to that site. Everyone wants to submit their apps to the sites with all the hits, and submitting them to the minor sites is less important. You can see some of this in my brief look at some page view hits when I advertised my previous game, where there was over a 10x difference between the site with most hits and least hits.

The funny thing about all these sites is that I think the average user doesn’t even know about them. I’ve been getting apps for iOS for years now, and until recently I’d say 90% of the apps I got were found directly on the Apple App Store, or because I heard about it from a magazine, news site, or word of mouth. Of these, discovery from the App Store leads to a very biased selection (with many games that make me want to scream “why is this popular?!?!”), but as a user it’s just so easy to do, instead of fishing through hundreds of review sites.

I think the fact that iOS apps can only be sold directly through the App Store is one reason that people are less apt to try out other stores, since you’re not going to find any good deals there. Compare this with how you can find various PC or console games in online retailers at varying prices, including used copies.

I’m starting to get the feeling that these app review sites may not really be worth my time (except possibly the most popular ones), though I don’t have enough data to make that judgement yet. But I’m quite confident that a really great app or game doesn’t need to be advertised on 1,000 different sites to become popular.

Mobile game development: putting finishing touches on visuals and sound

For my latest mobile game project, I decided to spent more effort on the overall player experience, in particular the visuals and sound. After I worked out the basic gameplay rules and level design, before releasing the game I went back to put some of these finishing touches on.

For the experienced mobile game developer, these types of things are second nature, but for the hobby game developer who is still learning the ropes it can take some time to shift one’s thinking to be player-centric. These refinements also contribute to the game’s overall appearance and can result in more downloads if they are showcased in screenshots and app preview videos. Ultimately, one of the best types of marketing is a game that markets itself with appealing graphics.

In this post I’ll highlight some of the visual improvements I did, followed by some audio and sound ones.

Visual

  1. I used a star field animation rather than a plain background on the screen behind the game board. This took some tweaking to get right, and I ended up using different layers of stars to add depth, with colors and speeds set accordingly. For example, stars that are closer move faster and are brighter looking. The stars also fit well with the ‘meteor’ element which is introduced into the later levels.
  2. I added an animation at the beginning at each level where the tiles fall into place from the left and right sides of the screen.
  3. When a game ends, the tiles fall away off the screen.
  4. Touching and holding the screen causes the tiles in the same column and row to be highlighted up. This has to be done since the actual square being clicked on is usually not visible because the user’s finger covers it. The color of the highlighting is white for valid spaces, and red for invalid ones.
  5. I spent a great deal of time tweaking the animation for when tiles expand or ‘grow’ outwards. I ended up with using a random timing for when tiles appear, and this gives the game a certain chaotic feel I thought was fitting. Also, rather than a tile suddenly appearing, the color grows quickly from the center of the tile.
  6. I added a white square showing the last tile placed by each player, since it’s easy to forget.

Sound/Audio

  1. I added background music which had a retro feel to match with the visuals, and a high-energy feel to make the game more exciting.
  2. I added sounds corresponding to winning or loosing a game.
  3. I added a sound signifying that the user tried to place a tile at an illegal location.
  4. I added a sound for when the tiles fall into place at the beginning of each level.
  5. For each tile appearing as part of the expansion process, I play a chime-like sound that gradually increases pitch.

For the app preview video, I found another high-energy song which I really liked so I used that instead of the game’s actual music. I also shut off the sound effects since I thought they would be distracting. But the visuals are all intact, so if you are interested you can check out the app preview video here.

Six nice things about advertising your game online

Though I’ve never been a huge fan of advertising (as a consumer or producer), after spending a few hours trying to push my latest game on various online spots, I’ve started to get used to it, even enjoy it a bit.

The main purpose of advertising is to get more people to learn about your app and actually download it, but there are some other perks that come along with the ride. I’ll mention a few which I’ve noticed.  Most of my efforts have been put into posting on forums and these items reflect that.

1) It’s a great form of market research – you can see what types of games are out there being marketed, as well as how they are marketing them (videos, contests etc). You can also get a feel for which games are getting more attention from the views on their posts. One might argue that looking at the various app store’s ‘popular games’ categories gives similar information, but often the apps that get that far have a large marketing budget, and those techniques don’t necessarily apply to the average indie gamer.

2) You can advertise your game using very small chunks of time, unlike development which may take you just 15-30 minutes to get ‘in the mode’ and actually start writing code. Once you prepare your screenshots, videos, and text for your posts, the actual process of posting is pretty quick and can be done in a few minutes. Often the most time is just spent registering for an account.

3) You can get much more feedback about your game, whether from hits on your various forum posts or comments. Much of this feedback comes quickly, sometimes in only a few hours. Though not nearly as nice as actual downloads, these can translate to some type of satisfaction or motivation to continue marketing your game.

4) After you have found the first few top forums and posted to them (i.e. Touch Arcade), you have to start spending a bit more effort to find those which are less popular, but have a chance to help bring in more users. Finding such forums can be rewarding, as can be the judgement process in deciding which are worthwhile.

5) Rather than using the same text for all posts, you can customize each one based not the form theme, user base of the forum, and what games seem to be popular on that forum. Through this process you can improve your writing, creativity, and ability to perceive trends. For example, if you find out a certain post on that forum seems to be getting a lot of hits, you can see if you can relate your game to it somehow.

6) Knowledge of how to advertise software online is a very valuable asset, since it can be applied to any of your future or past projects, irregardless of genre or platform.

Dokusen: The Art of Domination [Gameplay basics]

Recently I was skimming the forums where I advertised my new puzzle game, Dokusen, and realized someone had made a comment about how they had no idea how the rules worked. I was planning on writing a post about the game’s rules anyway, but this made me decide to do it sooner rather than later.

Each stage has a different board size and shape, along with a different set of players. The types of players are as follows:

1) User player: the person playing the game, present on all board levels.

2) Inactive player: a player who begins the stage owning one or more squares. This player type does not place any more tiles with intent, but the existing tiles will spread automatically.

3) Active player: Same as an inactive player except it gets to play a new tile once each turn like the user player.

Basic game flow

1) User player plays a tile of their color in any legal square. Legal squares are defined as any square except one already owned, in other words either a black square (not owned) or one of a different color which is owned by an enemy (active or inactive player).

2) If present, one or more active players each play their color tile on any legal square. The level of skill of the active players depends on the stage.

3) All tiles that are currently on the board are then expanded or “grown” to legal spaces, if any.

4) Special effects will then take place (such on meteors on stages where they appear)

5) Back to step 1, where the user player goes again. The game ends when all the squares are taken. If the user player owns over half (50%) of the available squares, that stage is won and player proceeds to the next stage. Otherwise, it is a loss and the stage must be replayed.

The only other thing that needs to be explained is the rules for “growing”. They are actually pretty simple – a square will change ownership to whatever color is surrounding it on more sides (up, down, left, right) than any other color, excluding black. To see this in action, let’s look at the first few moves for level 5, which contains a inactive player owning four squares at the start of the level.

tutor

The user player decides to play on the topmost square, and you can see this represented by a white dot. After that, the tiles around squares of both the user player and the inactive grow and expand outwards.

tutor_2

Let’s talk about two squares and why they changed colors during the growing process.

1) Top left blue square above: this one was bordered by black on left and bottom, nothing above, and blue on the right (the one the user player just put down). Since black doesn’t count, the square was ‘dominated’ by blue and so it became blue.

2) Square in the middle of the board: this one was bordered on all sides by orange, so it became orange.

For the next turn, the user player (blue) decides to play on the bottom center of the board. During the growing stage, this new blue square expands to the left and right, but does not grow up. This is because there is an orange square two above it, such that the square about the newly placed square is bordered by black on the left and right, orange on the top, and blue on the bottom. Since there is a tie, the color doesn’t change.

tutor_3

I hope this explanation made the rules a little clearer, but if you have any questions feel free to comment on this post.

I recorded a short video of the above game which can see below. I ended up loosing, but the purpose of this post wasn’t to teach strategy. I may do another post on that later.

A little about the game music

I’ve already gotten some good feedback about the game’s music, so I’ll talk about it in this post.

This good feeling retro-y techno music is from an album called Resistor Anthems, but Eric Skiff.    You can see the artist’s web page here: http://ericskiff.com/music/. The entire album is released under a Creative Commons Attribution License, so you are free  to use any of the songs in any way you like, as long as you give credit to the creator.

I’ll leave it as a secret which song(s) from this I chose to utilize, but in the game’s credits screen you can see the song name(s) listed.

The music is truly awesome, and Eric himself is awesome for releasing this to the world for free.

Detailed review of “Little War Game”, a HTML5 RTS game (updated)

Recently, due to my familiarity with the RTS genre I was asked to review the game “Little War Game”, which can be found here:

http://littlewargame.com

At first, I hesitated since I wasn’t planning on advertising others’ games on this blog. But on reconsideration, since the game is made by an indie developer and is from a related genre to Play the Field, I decided to review the game after all.

As this post is fairly long and detailed, I’ll just give the punch line here: I highly recommend any RTS fans to try this game out.

The game’s biggest selling point is that is created using HTML5, which means you can use it on any browser, on any OS, at least in theory. This is great for users since they don’t have to have a specific setup to play it, though I think this point is best appreciated by a game developer. Conversely, since a browser language like HTML5 conceptually would be a bit farther from the hardware, from the start I set my expectations low for the graphics and performance. [Note: I have only vague familiarity with HTML5]

In spite of the supposed platform independence, my first experience with the game was a bit awkward. I attempted to open up the website on my iPhone’s Safari browser, and after playing with it for a little time I couldn’t get it to start. To be sure, mobile browsers probably have many limitations not found on desktop machines, and maybe with a little more poking around I could have gotten it to work. Regardless, for the HTML5 aspect to really shine, it should function well on all common mobile device’s browsers – though I acknowledge how difficult that might be. At minimum, I would hope the page detects I have a non-supported browser and lets me know early on.

But on to more fun stuff – When I tried it on my MacBook Pro’s Safari, the site loaded up quickly and I was able to get a game started in only a minute or so. The initial menu screens have a strong nostalgic retro feeling, reminiscent of some classic console games, especially because of the blue color gradient.

LWG has several modes, including a live multiplayer with one or more users logged into the site, and also a single-player version. In both cases you can choose the level and add computer player(s) as needed. There seems to be a good assortment of different levels.

I didn’t explore the menu system completely, but I didn’t come across a single player story mode. Though one can argue most users spend the greatest percentage of their time in the multiplayer modes, I feel that a story helps bring you into the world and familiarize you with the various units. As good story writing is difficult I wouldn’t expect a great deal from an indie developer, but 5-10 levels of story mode would really do the game good in my opinion.

The game itself is a traditional RTS set in what looks like the medieval period. You have catapults, mages, wolves, archers, and probably many other units I didn’t get far enough to play with. Purposeful or not, I feel it took some influences from games like Blizzard’s Warcraft series (the RTS one, not the online one), though this is by no means a bad thing. The game flow is very typical: build miners, get resources, build buildings, train units, explore, attack, expand, etc. This is both a strong point, since it is familiar for most gamers, and a weak point since there isn’t that much creativity to neither the gameplay nor the universe the action takes place in.

The graphics are reasonably good, given they we going for the ‘retro’ feel, though of course it doesn’t compare to a game like Starcraft 2 whose graphics are close to a work of ark. That not a fair comparison anyway, because games like Starcraft are written by a massive studio with insane budget.

As a side note, some of the game’s graphics like the minimap and shading algorithms reminded me of my last desktop RTS game, though LWG has much better visuals. Again, there is a good explanation for this since LWG’s credits states five people worked on the art. To the developer’s credit, he seems to have done all the coding himself, which is an impressive feat.

Though I had the sound turned off most of the time, I would say the sound effects were so-so, with the music fairly well made.

Retro assets are great and all, but if you’ll allow me to wane critical again I think the game’s popularity would go up if the visuals were revamped to be more modern, with higher resolution. If certain browsers can’t take the load for high-density images, the LWG developer can make several versions of the tiles and all selecting the best set (either automatically, or by the user).

The game worked relatively well, but I did come across a handful of bugs. The most annoying of these is when the explanation text shown in the top right window was consistently cropped to a single line, in some cases hiding valuable information. Also, one time when I left the game running in the background while I opened up WordPress in a separate tab, my browser froze for a few seconds, twice, because two scripts were not responding (IIRC “event.js” and “game.js”).

In terms of the RTS elements, there were a handful of fundamental things that appeared to be missing, like the ability to create groups and to add waypoints [Update: I have been told both of these are supported though have not verified myself, check the Settings page of the game], both critical to any serious RTS gamer. Some of the visual design was also a bit wordy and hard to understand in a brief glance. For example, the capacity of mining was shown with a number instead of a horizontal bar, and it took me awhile to find the building to give more control since I had to read all the text. For this second issue, traditional RTS games usually have little icons indicating the amount of control needed or produced so reading through text isn’t required.

The overall control was mostly intuitive, but I ran into one frustrating problem over and over. I habitually did a double finger drag on my MacBook in order to try and scroll the field, but in LWG this instead zooms in or out. I imagine this could be tricky to address since HTML5 is used, but I would rank it as a pretty serious issue to try and sort out.

The performance was reasonable, though a little on the slow side. I think there should be a setting for speed – if there was one I didn’t manage to find it yet.

Overall, from the eyes of a game developer this is a pretty impressive indie game project, very solid in many areas. I am not sure if the creator is open to adding more developers to the project, but it looks like a fun endeavor to code, especially for a classic RTS fan. From a brief look at their website I saw they were making some APIs to allow customization, so anyone could potentially contribute this way.

If you’re just an everyday casual player, while the game is fun I think some people will have a hard time getting hooked to keep playing. Besides the improved graphics or story mode I mentioned, adding things like achievements, ladder play, or more races (there appears to be only one) could go a long way here.

For the hardcore RTS players, its virtually guaranteed that you will get a better experience in terms of graphics and performance on native platform code (say, code written in C/C++ compiled for Windows). So the Starcraft fanatics might never quite get addicted to this, however if LWG’s creator can beef things up with extra elements it can become an even greater game.

All things considered, I highly recommend checking out Little War Game.

For a final note – if you enjoy RTS games and happen to have an iPad, consider checking out Play The Field why you are at it. It’s a game that evolves the RTS genre for mobile to allow for shorter games while testing your tactics. Here is the link to download it from iTunes:

https://itunes.apple.com/us/app/play-the-field/id985621862?mt=8

(Note: I spent roughly 30-60 minutes playing the game before writing this, so surely there are some things I missed. I’ll update the article if I receive any new information.)

(Update: I had originally alluded to a team of people working on this game but was told there was pretty much only one person doing development and making frequent updates, so have updated the review content to reflect this. According to the credits page on the website there was several people who worked on the tileset, which is why I had written “team”, but I was told they have not been active lately. Having said that, I think their contribution is important since I know how difficult it is for a developer to make a good tileset)

Play The Field: What kind of game is it?

In my last post I showed a brief demonstration of the gameplay for my iPad game Play The Field. However from that alone it may be hard to tell what is going on, except that there is some sort of action happening. So in this post I’ll talk in detail about what the game is about.

For each stage in Play The Field, there are only two objectives: never go down to zero units, and try to reduce the enemy to zero units by capturing theirs. At any time during the game if you have zero units on screen (except the start of each stage) you immediately loose that stage, and if the enemy goes to zero you pass that level. It’s as simple as that.

In order to achieve said goals, you have two actions to take: placing new units and managing ones already on the screen.

Placing a unit is as simple as clicking on an empty space on the map. If you have enough money to create the unit it will automatically join the game at that location. Money comes from two places, an initial amount given at the start of the game, and an amount received from capturing each enemy unit.

Except for the first few stages, there is usually a choice of several different types of units, and the ones available are shown on the top of the screen. The currently selected type is highlighted, and to change that simply tap on another type.

Units on screen are managed by issuing commands. This is done by first selecting a unit by tapping on it, and then clicking on either an enemy unit or a location on the map. There are a few more advanced commands, but I’ll leave those for a future post.

Units will typically attack enemy units in range, unless they were commanded to attack a different unit. A unit without any commands will also move towards the nearest enemy unit. When a unit takes damage, it’s HP (hit points) will decrease a certain amount, and if any units HPs reach zero (or below), they will disappear and be considered as captured by the opponent’s team.

The gameplay is somewhat reminiscent of the Real Time Strategy (RTS) genre, with it’s well known classics like Starcraft and Age of Empires, and without a doubt these game were a major influence. However the gameplay is vastly simplified (as well as the graphics – more on that later) so it’s much easier to pick up as a casual game. In fact, the short stages, some of which have a “trick” to solve them quickly, have some similarities to the puzzle genre.