Ozymandias - A Java Game


Artwork

The art in the game is all done by me primarily in Aseprite, an amazing pixel art software. I used it for all the pixel art in the game. The character sprites are heavily inspired by early Pokemon games such as Pokemon Yellow. I used character sprites from Pokemon Yellow as a base to edit and make my own. This helped a lot with the animation process.

World Map and Tile System

For the tilemap I made a bunch 16 by 16 pixel tiles and set them to different indexes in an array. I then made a text file containing numbers separated by spaces. The numbers represent those indexes in the array at which tiles are stored. My tile manager class takes this text file and puts the indexes into an array for the tilemap this is read when tiles are being drawn. When drawing the tiles, I check to see what tiles would be displayed with the camera and only draw those close to the camera as to not have to draw the entire map at once to save memory when rendering.

Music

The game's music is inspired by games such as the Legend of Zelda and other NES games. Using beepbox.com, I was able to make a retro-style chiptune soundtrack that doesn't get too repetitive while playing the game for extended periods of time.

Image of beepbox.com
beepbox.com

Game Objects

Objects can be created and placed around the map using a system involving a superclass called GameObject of which there is an array in the GamePanel class holding all the objects that are placed in the game. This superclass contains variables such as the x and y coordinates of the object, the collision box dimensions, object name, and object image. To create an object I create a class that extends the GameObject class that gives values to previously described variables. To draw these objects on the screen I have another class called AssetSetter where I instantiate the GameObjects in the GameObject array located in the GamePanel class and set x and y values that correspond to the coordinates of the tile I want the object to be placed on.

Entities

Like game objects, I have a superclass called Entity that holds many of the variables an entity needs to use such as speed, images, direction, animation speed, collision box, etc. This allows me to have subclasses like NPC subclasses and the placer subclass that instantiate these variables and describe their own methods to make each entity unique.


Download Coming Soon