Programming

Monorush 2D Game Framework

Monorush (name subject to change) is a 2D framework I started working on early 2014. It is essentially a redo of my previous Heliopause engine but with the many lessons I’ve learned about programming in the 3 years between their conceptions.

I’ve switched the engine to run on the Monogame framework over the XNA. This is a trivial switch but it should be noted that the engine is specifically built to target Monogame if XNA and Monogame in the future have different interfaces.

The current features are very basic such as scene management, multimedia controls and a basic component system to encourage creating objects via composition and reduce the likelihood of having deep inheritance hierarchies.

Also because I’m targeting Monogame which runs on many devices with many different types of screens I’m doing my best to design a system where a developer needs to do as little as possible to deal with multiple resolutions.

I’m currently developing a small game to accompany the first release as an example application. Until the the pre-release code can be viewed in a public repository here:

https://bitbucket.org/alexlevelism/monorush

PAEA

PAEA is a research project for which I was hired as a programmer to implement a multi-tired application consisting of many software components that all had to communicate including a game, game engine, web application and backend software components.

The project is funded by the University of British Columbia and the British Columbia Institute of Technology.

This was largely built on a Microsoft stack.

Playstation Mobile Rushlib Framework

PSM-Rushlib is a framework for developing games for the PSP-Vita and other Playstation Mobile (PSM) enabled devices such as the Xperia Play and Xperia Tablet Z. It is focused on making a framework for quickly and easily developing 2D games for PSM devices. I currently use it in my first game NekoRush and am using it in another educational game I’m currently developing.

Features include:

  • Animation
  • String Rendering (via fontmap generation)
  • Camera system
  • AABB Collision via optimized version of the SAT algorithm
  • Efficient rendering (only one vertex buffer transfer per render cycle)
  • State Management
  • Visual diagnostics system for profiling various code on device
  • Tilemaps
  • Light GUI classes
  • Emitters

The code is open source and and publicly hosted on a Mercurial repository.

The repository for PSM-Rushlib is located here:

https://bitbucket.org/alexlevelism/rushlib

Heliopause Engine

The Heliopause engine is a 2D engine/framework written in c#/XNA/.NET. The focus is on making a library and toolset that allow people to very quickly prototype 2D games of any kind.

My reasons for making this library were that I wanted to take the overall ease of use of Flixel but make certain features such as state mangement and sprite animation more robust. By using XNA I can also draw many more sprites onscreen than I could with Flash/Flixel.

Heliopause features include:

  • Sprite class
  • Graphical String class
  • Collisions
  • Custom GUI classes including many classes specifically intended for games and console game menus
  • Tilemaps
  • Resource Management (textures, fonts, sounds)
  • Debug console and debug tools
  • Stack-based state management. Can control whether states under your state should update. Great for things like pop-up menus or pause screens.
  • Particles
  • Sprite layers
  • Pixel Shader support
  • Intricate animation class with own .anm human readable file format for controlling animation timing on a per-frame basis
  • Animation editor tool for creating, saving and importing .anm files if you prefer to make them graphically than by hand
  • Multiple 2D cameras and viewports

The project is open source and you can see the mercurial repository here:

https://bitbucket.org/alexlevelism/heliopause-engine/