After much deliberation, I've finally decided on a game to create. My requirements were pretty varied, so I wanted to make sure I thought everything out before starting to code. The concept is simple: you have a ball, you have a hilly landscape. When the game starts, your ball begins rolling down the hill. The user interaction is also simple: tapping the screen (or clicking a mouse) will cause the ground and sky to flip, leaving the ball where it is. This will have the effect of causing what was an uphill slope to become downhill again.
This, combined with momentum, will allow the player to constantly keep the ball moving, perhaps even jump the ball to collect certain kinds of items. Plus, I just thought the idea was neat. (Before anyone asks, yes, this was partly inspired by Mechanic #001: Negative Space over at the Three Hundred blog.)
I felt that creating a simple 2d physics engine that could do the kinds of calculations this game requires would be both complex enough to satisfy my professor's desire that this be a non-trivial piece of programming and easy enough to get done with whatever time I can muster up in the next 6 months. (Although, there is a bit of concern on the part of some of my coworkers that even this is too ambitious.) A physics engine would also give me about a billion things to write Code Contracts for; my Vector2 implementation already has 81 pre and post conditions that are verified on build and so far that class has only very minor functionality (overloaded ==, !=, *, length (magnitude) and some convenience methods for getting the vector as a 2 element array).
The other reason why this appeals to me is that I will have the opportunity to write the first and (as far as I can tell) only Code Contract verified physics engine for C#, talk about a resume enhancer!
I've gotten the first bits on CodePlex, check out the project here. I would say feel free to contribute, but I probably won't be accepting pull requests until after I've been graded (for reasons that should be fairly obvious).
Side note: setting up VS2012 with Git and hooking this all up to CodePlex was a dream. I don't know if it was simply that I've learned much about source control tools in my experience with Google Code and Mercurial, or if it's just really easy with VS2012, but I had none of the problems I was expecting. I can see why people use CodePlex with Visual Studio projects.
Documenting a Computer Science M.S. project from start to finish using C#, XAML, Code Contracts. The final project will be a moderately complicated Windows 8 device game app.
Sunday, June 30, 2013
Tuesday, May 7, 2013
The Countdown Begins!
As of the time of this writing, I have a little more than six months to fully design, develop, specify, verify demo and deploy a Windows 8 game app, lending this blog the name "T Minus 6." I've already done a little bit of research and I have some pretty solid goals in mind. So, onto the details:
- This project must use Code Contracts. This was first and foremost, as it is an area of interest for me and my project adviser. This decision means I have to use C# as well, which led me to...
- This project will result in a Windows 8 app. With app development being all the craze, what better way is there to showcase that specification is ready for prime time than by developing a Windows 8 application?
- The app will be a game. This is really a self imposed requirement, just to keep the project interesting and to (hopefully) give me the experience of deploying the app and seeing what it takes to do all the things associated with app development.
- The app will use XAML exclusively as the way it displays graphics. It shouldn't be too hard to use storyboards to build animations, and there is at least one good physics engine out there for it, as far as I can tell, anyway.
- I will be following an agile process. I'm familiar with it, it will structure my development, and it will allow me to assess the progress of development as I reach my December deadline.
I still have yet to come up with an idea. I want to make it more entertaining (to code) than yet-another-Mario or yet-another-Tetris, while ensuring I can deliver by the deadline. This could mean several things: producing a single level of a level based game, producing a really super simple game idea, introducing procedurally generated elements or levels, etc. Part of my "Sprint 0" will be settling all these questions, but for now I'm doing only research.
I'm positive I want to use Mercurial as my version control system, but still trying to see what the merits are of Codeplex vs Git or Google Code. Seems that many Windows 8 developers are all using Codeplex, so that might be why I'm considering it, but I'm more familiar with Google Code, so we'll see.
Anyway, if you are interested, keep following. Posting may be sporadic, but I intend to include notes on breakthroughs, code samples, "what I'm working on," "what I'm struggling with," and other types of things on a semi-regular basis. Part of my sprint review process will also culminate in posts, which will probably be more lengthy. If you have any questions, feel free to comment! I'm looking forward to seeing what kind of audience actually takes an interest in this, if I even generate one, so come one, come all, and enjoy the show!
Subscribe to:
Posts (Atom)
