A package that includes game engine code that I have written for the Love2d framework.
A few highlights:
- A lua-based entity-component system, and a number of common components
- Basic AI steering behavior
- Real-time audio synthesis
- Simple scene-system
The "game" packages I have created, mainly to test and play around with the engine, are detailed below.
Requirements: Love2d
The warpinggrid project runs very slow without the version of Love compiled with Luajit. The easiest way to get that is probably to search the forums for the latest 0.8.0 build.
Directories:
- Games: Directory holding game projects
- Scraps: Possibly working, probably obsolete and not-working games.
- Shared: Game engine code shared across games
Directories are organized to make it easier to have multiple game projects. To create a new game, add a new directory to the "games" folder. To build, run:
./build.sh {gamename}
ex:
./build.sh juicy
This script will build a .love package, put it into a "distro" directory, and automatically run the .love package.
Minimalist "Game of Life" implementation with some pretty colors.
Test game for shotting bullets, placing them in a quadtree, and testing an (invincible) opponent with AI steering behaviors.
An implementation of some of Martin Jonasson & Petri Purho's "Juice It Or Lose It" features in Love2d. Somewhat updated version of what I wrote up here.
A port of "Echo Breakout", a music hack day project by Brian Fife and I did one year.
Code to visually test my implementation of quadtrees
Test implementation of real-time audio synthesis. Press up or down to change wave types, and press "w" or "s" to change note.
An audio toy that uses real-time audio synthesis and a looping window to create and play simple set of notes/chords. Click on a square to set a note. Press up or down to change wave types.
Test implementation of mapping the screen into tiles
A 3d warping grid projected onto a 2d plane, a la Geometry Wars.
Press enter or space to warp the grid.
Concepts drawn from http://gamedev.tutsplus.com/tutorials/implementation/make-a-neon-vector-shooter-in-xna-the-warping-grid/ and ported to lua.
Moderately dissatisfactory experiment in using springs to simulate water effects. Based on http://gamedev.tutsplus.com/tutorials/implementation/make-a-splash-with-2d-water-effects/
I'll fill this out with more details on the code here at some point.
Directories:
Real-time Audio Synthesis in lua.
Implementation drawn from:
http://www.headchant.com/2011/09/20/sound-synthesis-with-love/
Port of some java-style collections
Basic Entity-Component framework inspired by Artemis and posts by Adam Martin. Just about everything in the game is an Entity; every data attribute is packaged in a Component; and everything that happens to update or react to those Components happens in a System. For an overview of the theory behind this, check out this post
External Libraries:
- Middleclass by Kikito
- Lua implementation of Robert Penner's Easing Functions
- SLAM and port of HUMP Vector class by Matthias Richter
- UUID implementation by Thijs Schreijer
Some generic game code. Directories:
- AI: Steering behavior ai
- Automata: Cellular automata
- Generic: Generic behaviors
- Warpinggrid: 3D warping groud source