13
Obey Gravity Update Java Code, Layouts, Assets, Source/Version Control By: Team Artificial Gravity

Obey Gravity Update

  • Upload
    dafydd

  • View
    73

  • Download
    0

Embed Size (px)

DESCRIPTION

Obey Gravity Update. Java Code, Layouts, Assets, Source/Version Control. By: Team Artificial Gravity. Obey Gravity Project. https://dl.dropbox.com/u/61057029/AritificialGravity-Artificial_Gravity-ece78fd.zip Above is a Dropbox link to a zipped folder containing all of our project files. - PowerPoint PPT Presentation

Citation preview

Page 1: Obey Gravity Update

Obey Gravity UpdateJava Code, Layouts, Assets,

Source/Version Control

By: Team Artificial Gravity

Page 2: Obey Gravity Update

Obey Gravity Project

https://dl.dropbox.com/u/61057029/AritificialGravity-Artificial_Gravity-ece78fd.zip

• Above is a Dropbox link to a zipped folder containing all of our project files

Page 3: Obey Gravity Update

Java Code, Layouts, Assets• Separate Java files were written for each part of the

game, such as GamePlanet.java and GamePlayer.java

• The code was thoroughly commented to describe our approach

• The layouts file contains the main.xml and the level-complete.xml so far, which depict the format for the “Level Complete” screen

• The assets files contain the code for the design of the levels, with planet radii, starting and ending goals, etc.

Page 4: Obey Gravity Update

Starts in GameActivty - Creates GameRenderer which

is a RajawaliRenderer

Program Flow

GameRenderer - GameRenderer.initScene() is automatically called by the

rajawali3d framework to initialize the 3d scene

Depending on the AppState in

GameRenderer, either Game.update or

GameMenu.update is called each frame

The GameRenderer.onDrawFrame() is called by openGL every frame to do all the drawing. This is where I

call update() in the currently active

application state class (Game, GameMenu...)

The current application state (main menu, game

screen, options etc) is maintained by

GameRenderer. Additionally, each of these

application states are contained in their own

classes which implement IGameScene

This will call init in either Game or GameMenu, based

on the current AppState

Page 5: Obey Gravity Update

What’s what in Obey Gravity?• Game - Contains all the logic for the game. Game.init will initialize all the things

needed to display 3d objects, load the levels and manage it's own state. Game contains hashmaps to map textures/materials by string id, also level objects by string id

• GamePlayer - Contains all the logic for the player. Game will contain an instance of GamePlayer and manage it accordingly, along with various GameObject's such as GamePlanet and GameAsteroid GamePlanet, MenuPlanet, GameAsteroid - All these derive from GameObject and are used by the game in either gameplay or in the menu

• ParticleEmitter3d, SpecialLine3D, Cylinder3D - These are my custom 3D object extensions that all derive from rajawali.BaseObject3D

• GameSoundManager - is a single class to manage the playback of sound effects (via SoundPool) and background music (via MediaPlayer). Sounds/Music are added and played by string ID. The sounds/music are loaded from /res/raw

Page 6: Obey Gravity Update

What’s what in Obey Gravity? (cont.)• GameUtil - Utility functions and definitions. Java's math class defines many trig

constants as doubles, so to work around constantly having to typecast to float(which slows things down) I define my own constants here as float. This class also contains my logging functions for logcat.

• Ticker - Contains some functions to keep track of time in the game • IGameObject - interface for all 3d objects that appear onscreen • IGameScene - interface for all game scenes which will contain a 3d object.

Currently there is 2: Game and GameMenu • IUpdatable - interface for any component which requires an update every single

frame of the game. All GameObject's implement this interface. IGameScene also implements this interface.

• All classes have a static final string TAG which is used in calls to GameUtil.LogError or GameUtil.LogDebug

Page 7: Obey Gravity Update

Separation of Concerns

• Between the UI Logic and the Program Logic: most of the UI Logic is contained in gameactivity.java

Page 8: Obey Gravity Update

Support for Debugging

• A system was created in which each class has a tag• There are then debug logging functions that utilize

those tags to output to logcat

Page 9: Obey Gravity Update

GitHub used for Source/Version Control• Used to help people build software together• Ability to share, edit, and store code• Keeps track of various versions of the program and

when they were updated (allowing users to download a previous version)

• Can comment on what specific files of the program have been edited

The following screenshots show how GitHub stores the versions (most recent at the top) and the program can be downloaded and edited

Page 10: Obey Gravity Update
Page 11: Obey Gravity Update
Page 12: Obey Gravity Update

A Link to our Commit Historyhttps://github.com/AritificialGravity/Artificial_Gravity/commits/working• Incremental development was followed by committing our changes

after each incremental build. This can be followed with the link above to our commit history to see the increments.

Page 13: Obey Gravity Update

SW Co-Design Summer 2012Dr. Shankar

Mofidul JamalPavitra JaiswalCeren Isildak