UPDATE: Project Acorn is finished and is
now available in the Windows Store!!!! NEXT!!!
Well, after recently joining the TIGSource forums I figured I would start a DevLog to help keep myself accountable and participate in this great community

. I hope this log is received well

.
The GameAs mentioned in the title, Project Acorn is a risk-and-reward card game for kids. Think of it as a card-based version of Farkel/Zombie Dice/etc. in a kid-friendly setting. Being a lone-wolf, all code, art, and music is done by myself.
Menu screen:

Play screen:

Game Over screen:

The goal is to be the first player to save ten acorns. There are four cards to flip-over. A card has a value of one acorn, two acorns, or zero acorns. At any time, a player can choose to keep the number of acorns they have flipped over so far. If a player flips over a zero card though, that player's turn is over and they lose all acorns they've flipped over so far in that turn. If all cards are flipped over, four new cards are dealt and the player's turn continues.
BackgroundBy day, I work for a small company on a small OS called Windows. I've long been interested in game development. The first blog I created and wrote on was primarily about game development (almost 10 years ago now!!!! Though the blog is long gone

). In fact, that blog is how I got the exposure to get my first job here at Microsoft (as a Technical Evangelist). The problem is that I've always spent so much time focusing on framework and infrastructure that I've never made much progress on any game. This time around, I want to focus on actually finishing.
Another thing that happened along the way for me was becoming a father of two wonderful sons (now ages 3.5 and almost 6). Recently, my son has started playing games on my Surface tablet and I came to a conclusion: there's really not that many good kids games in the Windows Store yet. Either it's a memory game, a tic tac toe game, a storybook, or a bad Angry Birds clone.
So in the vein of focusing on finishing games and starting very simple (none of this "How can I build an MMO?" from me

), Project Acorn was born.
Development History (how Project Acorn got to this point)Project Acorn was first prototyped using homemade cards that my oldest son and I created to play the game on the dining room table. But you know what? I'm a cheapskate. I don't like spending money if I don't have to (especially if there is low chance for me ever getting that money back). I first started building Project Acorn with the free download of Unity 3D using some free 2D libraries that looked pretty good. It didn't take much time at all to get the core functionality of the game built in Unity and working end-to-end.
But then I stopped... As mentioned above, I plan on publishing this first to the Windows Store (I don't have a Mac machine or developer account to publish for iOS and I have no Android device either). The Windows Store support in Unity is currently in Beta and I want to be able to publish this game right away. Eventually, I most definitely plan on targetting iOS. But I first need to earn the money to pay for the gear I need. My hope is to earn that money over time using the money from Windows and Windows Phone games (while at the same time saving money up every month into an "platform expansion fund"

). Also, the "frugalness" has me thinking of Unity as more of a long-term "want to get it eventually" thing as there is also the cost of unlocking publication to each supported platform (it can get spendy).
I started looking for other options and found Game Maker Studio. Once again, it didn't take long to get the core game up and running. Then I started hitting some hurdles. For instance, the ad support for Windows Store apps is broken (or was broken at the time) and ad-funding is one of the predominant monetization approaches I want to try. It also costs money to buy the full version of the software and I didn't want to spend $250-300 to unlock the platforms I care about.
So here I find myself today. Project Acorn is currently built in Visual Studio 2012 using MonoGame. The advantage for me is that everything I need is completely free. So I'm having to spend $0 up-front to do this. As with Unity and GMS, it took very little time to get the core game up and running. Most of the time has actually been spent on polishing the game (consistent graphics, animations, etc.). I want this game to be high-quality when I release. I want to spend that time that is needed to make a game "Done." Then, I will repeat that process with another small game I have in mind. For me, the focus is on _finishing_ this time.
The Code StructureThe actual implementation of the game structure is a Component-Oriented Architecture that I built on top of MonoGame. It is heavily based-on and influenced-by the book Game Coding Complete (one of my favorite game development books of all time, I must say; if you haven't read it, BUY IT

). I'll talk more about this in future entries. I'm doing a final little bit of refactoring tonight and tomorrow night and then will have it in a fairly stable form.
The Technology/ToolsHere's the list of tools I'm currently using to develop my games:
- Visual Studio 2012 - For coding
- MonoGame - Development framework
- Inkscape - Art development
- Spine by Esoteric Software - Sprite animations (surprisingly, even though I don't want to spend money, this looks like it could be a $60 very well spent to help get the animations integrated into the app).
- ProTools - Audio development (I know I stated I'm a cheapskate, but I already had ProTools as I'm usually a musician by night)
- Git/GitExtensions on Windows (hosted on GitHub) - Yummy, distributed source control

What work is left?There are several things I have left to do before I consider this of release quality:
- Going to introduce a SceneGraph tonight that handles all rendering and enables "picking" of entities. While choosing cards works right now, it's baked in directly to the input system by simply looking at collisions between input coordinates and game object collision boundaries. The underlying "engine" should be stable after this final refactoring.
- Have either red or blue squirrel "run" onto the screen depending on whose turn it is.
- Have acorns fall from sky onto the ground when a card is turned over.
- When a player chooses to stop their turn (keep acorns), have squirrel run across acorns on ground (which then fly up into their proper place on the scoring meter).
- Animate squirrels using Spine framework/tool (especially idle animations to give a sense of "feeling alive")
- Compose and add background music, "card turned over" sound, "acorn dropping" sound, "acorns being added to player's score" sound, etc.
- Add transitions between screens (elements flying off first screen and flying on for next screen)
- Create game company logo and animate beginning splashscreens before getting to main Menu screen.
Then there are, of course, the "release" tasks that I need to do. I'm not making a big push for marketing on this game as I'm mostly going through and building up my game portfolio. I have a longer-term goal that over many games, I will start to find those "1000 loyal fans" that like what the company is about and likes the games. I don't expect to make much money at all with the first couple of games. But I will definitely still push to do the ground work of building up the audience to help the success of future games.
- Release onto Windows Store (currently debating between ad-funded or $1.49 release price with free time-based trial)
- Write-up game on new company website
- Write-up about game on company's Facebook page (and send out to all my friends)
- Twitter, twitter, twitter
- MAYBE, do a Windows Phone port of the app.