Beatshot: An 8-bit shmup

Hello there, recently I demoed at TooManyGames 2013 with Shippensburg University an 8-bit vertical shooter called Beatshot.

The game’s main draw is that it’s designed around the Beatmania controller to move your ship and fire 5 different lasers. I developed it over the course of 2 weeks and like plenty of my other projects, have open sourced it for people to learn from. If anything, it’s just more of a vertical shooter framework than it is a full fledged game, but I might continue working on it to add some more features.

http://puu.sh/3hNDH/dbdcb3e3a7.png

Libraries used:

  • LibGdx
  • Artemis Entity System

Features:

  • Svg Derived formats for defining spawn group locations, movement patterns, and (soon to be implemented) bullet patterns along paths
  • Xml files for defining enemy atlases
  • Parallax scrolling layered backgrounds in levels
  • A selection of Creative Commons songs found on the Free Music Archive to jam out to
  • Designed to be efficient and low memory friendly.

TODO:

  • Story mode with dialog support
  • Title Screen with support for choosing different modes
  • Endurance Mode selection screen for choosing which level to play through on Endurance mode. Levels unlock as you complete them in story mode
  • Allow complex bullet and movement patterns through scripting with Lua
  • Built-in gamepad support so you don’t have to use Joy2Key to use a Beatmania controller

Feel free to use the issue tracker to report bugs or request new features to keep me motivated on the project and going.

There is not yet a compiled version of the game.
You can grab the source from Github: https://github.com/nhydock/Beatshot

Right now there’s only an endurance mode which will take the spawn formations from the first level and just keep repeating them in a random order. Enemies also do not have complex bullet patterns yet, as they only shoot right at you.

Something to watch out for:
Textures are not Powers of 2 or sprite packed yet. It’s possible the game will not work with older graphics cards, like the Intel GMA 950.

I’ve decided to start working on a configuration tool for this. I decided to do this so I don’t have to have controller and keyboard profiles hard coded in my game for all the different layouts and controllers people will want to play with.

The configuration tool will run on first-time run or if the beatshot.conf file is not found. You will also be able to run it as a separate application whenever you want.

Conf file will just be a basic Java Properties file formatted like so


#Music Directory
MUSIC_PATH=/absolute/path/to/your/music/

#Video Settings
SCALE=2

#Sound Settings
BGM_VOL = 10
SFX_VOL = 7

#Input
LEFT=Arrow_Left
RIGHT=Arrow_Right
LASERS=a,s,space,d,f
START=return
ACCEPT=a,space,f
CANCEL=s,d

Accept and cancel are assumed to be the “white” and “black” beatmania keys respectively when defining laser buttons, but can not be set individually in the config tool. You can still manually change it by opening the file in notepad. This is decided just for consistency sake. Controls are also specified by keycode.

You will also now be able to specify a directory for your own music to play during endurance mode. If the directory does not exist, or there are no songs in the directory, it will just play the level’s music on repeat.

Aside from deciding to work on the configuration tool, I’ve also planned some simple new features.

I’ve also decided to add a new value to spawn sets, you will be able to have a warning pop up when the wave to come you deem as hard


<path
    ...
    warning="true"
    />

This warning will pop up in both endurance mode and story mode.

Levels will also be able to have multiple songs specified to cycle through as you play the level. Bosses are also allowed to have their own song that plays. These only matter in story mode.


<level
    ...
    boss_music = "boss.mp3"
    music = "song001.mp3, song002.mpg, song003.mp3"
    />

I’m going to be creating a tag on the git soon to mark version 0.1. This will come before all these changes are implemented, and will come with a compiled version of the game for people to play without having to compile it themselves. It won’t be much different from what was played at Too Many Games other than a few small bug fixes.