What is a Runner?
The Pixel Vision 8 SDK was designed to be a self-contained, platform agnostic C# library. With that in mind, it will need a runner. The PV8 Runner is any code harness that bridges the core engine to a host platform. The Runner performs the following tasks:
Facilitates displaying Bitmap Data for rendering the display as well as the assets importers.
Provides an Application wrapper so that PV8 can run on a computer as an executable.
Calls the engine's Init() on startup and the Update(), and Draw() methods during each frame.
Feeds the engine input data such as the mouse, keyboard and controller data.
Provides a wrapper for playing sounds.
Allows loading and playing of games.
Runners are relatively easy to build. There is even an example of how to create a simple Unity runner in the demo section. Before you look at that, it's important to take a moment to understand how the runner should be architected and what you'll need to build to get Pixel Vision 8 running correctly.
What is Pixel Vision 8
PV8's core philosophy is to teach retro game development with streamlined workflows. It enables designing games around limited resolutions, colors, sprites, sound and memory. It is ideal for game jams, prototyping ideas or having fun.
Pixel Vision 8 is also a platform that standardizes 8-bit fantasy console limitations. Developers can customize these restrictions to match actual legacy hardware or create something new. The challenge of working within these confines forces creativity and limits scope. Pixel Vision 8 creations are expressions of ingenuity that rise above their limitations.
Pixel Vision 8’s SDK contains a collection of components called Chips. Each Chip shares an API and base class to standardize their lifecycle. A central ChipManager handles activating, updating and rendering them. Here is a list of the standard chips included with the SDK:
ColorChip - Manages system colors
Display - Renders pixel data.
Font - Renders sprite based fonts.
GameChip - A game's base class.
MusicChip - A sequencer for playing back music.
ScreenBufferChip - Caches sprites for tilemaps and fonts.
SoundChip - A sound effect manager.
SpriteChip - Manages sprites in memory.
TileMap - Drawing sprites into the ScreenBufferChip.
The engine is completely modular allowing you to extend these Chips to add new functionality or create your own from the base classes and interfaces provided.
Pixel Vision 8 SDK is cleanly architected and well commented. Along with a straightforward set of APIs, there is extensive documentation on how to get started, deep dives into the engine's code and how to build each of the demos from scratch. More documentation is on the way to cover how to extend the core system, create custom Chips and create runners for different platforms.
The Demo project contains examples of how to use the Pixel Vision 8 SDK APIs. Each demo highlights a specific aspect of the engine and shows off use cases for drawing sprites, capturing input, working with tilemaps and more. These demos are in both the Unity and MonoGame Runner example projects as git submodules. In addition to the pure C# code examples inside of the Scripts folder, there are also Lua examples inside of the Resources/LuaScripts folder. Lua games can be loaded at runtime and offer an alternative way to write PV8 games. These games require a special Lua Bridge included in both Runner projects.
Pixel Vision 8 was created by Jesse Freeman (@jessefreeman) in collaboration with Pedro Medeiros (@saint11) for art and Christer Kaitila (@McFunkypants) for music. With additional coding contributions by Shawn Rakowski (@shwany).
Licensed under the Microsoft Public License (MS-PL) License. See LICENSE file in the project root for full license information.
Pixel Vision 8 is Copyright (c) 2017 Jesse Freeman. All rights reserved.