Friday 25 April 2014

Day 1

Part 1: Setting up

We started later than planned.
I was late. Jack was very, very late.
We spent a good few hours setting up Eclipse and getting the android debugging connection working on our phones.
I had previously installed the Android Development Tools a year or two earlier, and only briefly used it then forgotten about it.
Since then I had rooted/updated my phone, so the debug connection wasn't working anymore.
After changing the SDK ADT was using, updating the Android Debug Bridge and messing around with it for a while, I finally got it to work with my phone.
I loaded up some example code (the snake sample code for API8) and played around with it a bit to get a feel for android.
It's important to remember at this point that before day 1 my full experience of android programming consisted of taking the snake demo and adding touchscreen controls to it.
After some googling, I started reading up on views and activities.
By the time Jack arrived (5 hours late), me and Kate had mostly figured out views, activities and the other basics of android programming, and we were ready to start designing the actual program.

Part 2: Design

We spent a fair amount of time talking about how the game would play from a gameplay perspective. We talked about things like movement interpolation, control schemes, and how we would implement such things if needed. Jack also liked the idea of bullets travelling over time, I disagreed an thought they should be instant, however I think that it's something that should be explored if we have the time.
We decided we'd start actually designing the android app and got out the whiteboard. It became obvious pretty quickly that we had no idea how to start.
I decided to draw up 3 columns: client, engine and graphics, and started getting people to list functionality each part of the app would need.
The graphics column covered the renderers, menus, etc.
The engine covered anything relating to actual gameplay, such as keeping track of the map, enemys, player input, etc.
The client column covered things like server IO, serialization and deserialization of objects.After a couple of minutes, we were making progress in leaps and bounds.
When we thought we had covered the functionality of each part of the app, we started breaking each column down into classes.

The whiteboard at the end of the discussion, complete with authentic engineer handwriting:


FYI the map is a separate class because we are using a special datastructure that makes serialization and deserialization better.
Input was later (day 2) moved to the graphics column because input is done on views, so we made a new class called InputView that MapDrawer extends.

No comments:

Post a Comment