Welcome to the game development blog for Townsend.
Townsend is a game I’m making for Android and iPhone that finds its roots in games like Harvest Moon and Animal Crossing. Townsend will feature farming, fishing, mining, and perhaps a few other activities that players can enjoy while saving up for a better house, farm, tools, and furniture. I’m using the Unity3d Pro engine to develop Townsend as a one-man indie team.
Each of the blog posts include a playable demo of Townsend. Simply download the web player from this page and then click on the image in a blog post.
I hope you enjoy these builds and the progression to their current state. If you have suggestions or enjoy my blog, by all means, leave a comment!
-You Can Play These Demos-
right in your web browser by clicking on the first picture in a post
After last week’s plunge into technical systems, I was glad to be able to focus on the content half of the scene. So glad, in fact, that I forgot to take screenshots of the progression! Oops… oh well. So, without any progression, here is what a grassy, blank-looking thing from last week turns into after lightmaps, detail sculpting, texture painting, trees, houses, bridges, and fog are added:
As it turns out, there was a piece of technical work that I had forgotten about: Pathfinding on terrain. This in turn led to other changes in my pipeline–and yay, more work. In the end, though, I managed to use some sweet systems to cut out a lot of manual work.
So far I’ve mainly focused on ironing out my workflow and coding systems. That stuff is very important and all, but often times it’s not very exciting! And I prefer exciting.
Please note that the new shaders unintentionally use real-time shadows, and trees are missing due to upcoming new environments.
While this build features no new gameplay elements, I have managed to increase the frame rate by 15-20% and cut the file size down by half (by two-thirds for the webplayer, even). Now that’s progress!
To achieve this, I upgraded my terrain system to the newest version, Terrain 4 Mobile Black Edition. This has some great new features that I can use, such as billboards for grass and small plants to detail scenes, as well as better editor controls. I’m currently using the demo version of the system to compare and benchmark. The demo has a bug in the shader I want to use, so in this build and frame rate benchmark I’m using a more complex shader than I need to. Obviously I’ll be grabbing the full version for the next build to increase performance even more!
Another optimization I did was removing all unnecessary assets from my assets directory. Over time I’ve accumulated some really great systems, models, and textures. Unfortunately, whenever Unity switches build platforms–from Android to the Web Player, for instance–it re-imports them (to optimize for the platform). Before cleaning it would take me over two hours to build a Web Player demo for you guys and switch back into Android development. Now it takes 15 minutes.
I also found out how to turn on anisotropic filtering on floor textures to make them much more sharp. It adds extra calculations to their rendering, however, which reduces the frame rate by about 5%. In the end, I’m not sure if I like the effect because it brings clarity to all parts of the screen, which makes the overall world appear more empty. The new terrain system’s billboard system will help me fill those areas up with objects that are cheap to render, so it’s kind of a toss-up. Let me know if you notice the emptiness effect, and if you like the sharper textures overall.
Lastly, I’m going to be including compiled Android installation files in every demo from here on out. You’ll find the download link on the Web Player demo. At this point I know few people will actually take the time to install the demos to their device, but hopefully this will change
Townsend is approaching the mid-way point in terms of a playable demo–most of the basic functionality is there and moderately polished, and there’s actually something players can do (plant stuff!). For me, this also means it’s time to start organizing tasks in a better way than just whatever needs to be done. So I made a Trello board for my development tasks. Trello is a free, online taskboard service, and it’s awesome for coordinating tasks with a team or just yourself. Seriously, if you are constantly doing team projects, go check it out!
Once that was up, I tackled a few tasks. First was finishing touchscreen controls. In the last demo you could only walk around with a touchscreen; couldn’t actually plant anything. I fixed that, and changed the command to plant things to a double-tap (or double-click). Lo and behold, I quickly found that this gesture sucks for the computer. The problem is that the computer is fast enough for the player (and thus the camera) to start moving between clicks, which then moves your second click off a bit. As for other gesture ideas, there’s long-press, two-touch, and mode-switching, but none of them have proven to be very fitting for the interaction :-/. For now, I’m just letting this go until I can fix the fps on touchscreens and test it there.
I also finished the growth system. I added fun particles that puff out when a plant grows to its next stage, as well as particles that flow from ripe plants to indicate their finished status. Also, plants will now grow through multiple stages if necessary after returning to a paused game instead of just progressing through one stage.
Finally, I added a visual indicator to show players what cell on the grid they are trying to plant on. Note that in the demo the grid extends through the entire town so the indicator is always shown, but soon the grid will be consolidated to plantable fields and other spaces of interaction (inside houses, for instance). At that point, the indicator will only show when clicking on these interaction spaces as intended.
In my last post I simply mentioned touchscreen controls as sort of a side thing that wasn’t very important. But this is not the case. I put a lot of emphasis on how people will interact with what I’m making and how their overall experience will be. Thus, I put a lot of thought into the control scheme of Townsend.
First, what’s the kind of interaction that players will be using the most? Probably movement. I specifically opted for a point and click (err, touch?) movement system, so it follows that movement will just be a single tap, single touch gesture. The next most used command would probably be interacting with objects or farming.
The next easiest form of input on a touchscreen is double-tapping (double tap, single touch). My undergraduate capstone was focused on gestures that replace right-clicking on touchscreens, so I know that although double-tapping is the easiest to manage as a user, much of the negatives are placed on the developer. I haven’t figured out how to detect double-tap without triggering a single tap command while avoiding the introduction of lag into both commands. It’s kind of nitty-gritty, so I’m going to leave it by saying that it’s going to be hard, but I’ll have to figure something out.
Then there’s camera controls. Townsend is a 3D game, and I really want to show this. Thus, I chose two-touch and drag as the gesture to control camera angle. This is a pretty simple gesture, and it will hopefully enable gamers to really interact with the world. To complete this, I’m including the ability to zoom in and out by three-touch and drag.
I haven’t even touched the inventory controls yet, so that may open a small can of worms in the near future. In my personal testing of this control scheme, things seem intuitive. If you would like to test it out for yourself, let me know!
Sorry iPhone users! I don’t have a mac, so I can’t export to iPhone yet.