Screen 13

Screen 13 is an easy-to-use 3D game engine in the spirit of QBasic.

Overview

Games made using Screen 13 are built as regular executables using a design-time asset baking process. Screen 13 provides all asset-baking logic and aims to, but currently does not, provide wide support for texture formats, vertex formats, and other associated data. Baked assets are stored in .pak files.

Asset Baking

Asset baking is the industry-standard process of converting files from their native file formats into a runtime-ready format that is optimized for both speed and size. Currently Screen 13 uses a single file (or single HTTP/S endpoint) for all runtime assets. Assets are baked from .txt and .json files which you can find examples of in the examples/content directory.

Quick Start

Included are four examples you might find helpful:

Each of these examples requires an associated asset .pak file in order to run, so you will need to run the examples like so:

cargo run examples/content/basic.txt cargo run --example basic

These commands do the following:

Roadmap/Status/Notes

This engine is very young and is likely to change as development continues.

History

As a child I was given access to a computer that had GW-Basic; and later one with QBasic. All of my favorite programs started with:

CLS SCREEN 13

These commands cleared the screen of text and setup a 320x200 256-color palletized color video mode. There were other video modes available, but none of them had the 'magic' of 256 colors.

Additional commands QBasic offered, such as DRAW, allowed you to build very simple games incredibly quickly because you didn't have to grok the enirety of linking and compiling in order get things done. I think we should have options like this today, and this project aims to allow future developers to have the same ability to get things done quickly while using modern tools.

Special Shout-out to Kenney Vleugels

The example code uses a few of the awesome 2D, 3D, and audio assets provided by Kenney Vleugels. These assets have been generously provided under the CC0 1.0 license and we are therefore able to share them with you in this repository. Please consider supporting Kenney for the excellent work and for what it is doing to help the game development community.

NOTE: If you look within the examples/content/kenney.nl directory you will find the packages we are using, however these packages are not the complete packages offered on their website because we have removed any assets that are not used in the examples. If you want to use these assets in your game we recommend you get your copy directly from their website.

Notes