Monday, April 4, 2016

Week 1 Progress

This week, we started working on our project. Most of the week was spent planning and putting together our proposal. We decided that we're going to make an Android game. Our major goals are for it to be fun, have educational value, and (hopefully) be popular. Our initial concept designs are given below.

Our current idea for the game is to make it based on astronomy. The game will take place in outer space, with the goal being to align a planet and its moon’s orbits with a required path. The story idea is that an imaginary space agency wants to mine asteroids (shown as stars in the designs below) at particular places in space. They know where these asteroids will be in relation to the planet but they need the player to decide where they should position the moon and its lunar base so that they can reach and mine the asteroid. In different levels, the player will also need to adjust other parameters such as the moon’s mass and velocity to get the correct orbit path. Figure 1 shows a depiction of a possible level in the game. This would be a relatively simple level where the player needs to adjust the moon so that it collides with the stars on the opposite end of the planet’s orbit. At the end of the level, the player will be presented with a congratulatory screen that gives them their scores and stats as well as a “fun fact” about astronomy (figure 2). This will be a large part of the educational piece of the game.


This concept image shows a possible level in the game. The user would need to align the moon's orbit correctly so that it collects the star on the opposite side of the planet's orbit. On the right side of the screen there would be control buttons that the user could tap to play/pause the simulation after placing the bodies as well as a reset button that would restart the level.
This is a concept image of the screen that would show up after a level is complete. The player would be presented with their score (3 stars in this case) as well as a fun fact about astronomy. They could also choose to tap on stats to see more detailed numbers that describe the physics behind the level they just completed. 

Another thing we did this week was set up software on all of our computers. We all installed Android Studio, the interactive development environment (IDE) used for making Android Apps, and created accounts on GitHub. GitHub is basically an online file sharing website that uses Git to allow multiple people to work on the same project by all sharing files in a central online repository. It's basically like Google Docs for programming.

This week we also started actually programming the game. We first needed to follow a few tutorials to get our feet wet learning about libGDX and box2D (see the external resources page). After that, we were ready to dive in and start coding ourselves. We set up a basic physics model of a planet orbiting a central body that collides with an asteroid (see video below). Box2D is an extension to libGDX (the game engine we're using) that simplifies the use of physics in games by letting a developer create bodies. These bodies can have properties (such as mass and volume) and can also feel forces. In this example, we gave each solar body a "body" in box2D and assigned it a mass. We then used Newton's formula for gravity to make the bodies interact realistically. Setting up the physics is one of the first major steps for our project. Once we get the physics working, we think it should be relatively easy to make a number of levels that implement it.  


Speaking of creating multiple levels, we also found a cool box2D editor called R.U.B.E. (stands for Really Useful Box2D Editor). This allows a developer to create a box2D world in a drag and drop environment and then import it into libGDX. We haven't explored it too much but we're thinking it could be really useful for making multiple levels, where the only difference between each one is the number, location of, and size of bodies. If we decide to use it, we would need to buy the premium version for $30.

That concludes our progress for the first week. Next week, we plan to continue working on the physics and start working on the first level. We also plan to explore R.U.B.E. to see if it could be useful tool for making levels in the future.

No comments:

Post a Comment