Polyscaena Project

POLYSCAENA PROJECT

3/31/2026

My first project under this handle is now started. Polyscaena, from Greek and Latin meaning something like "many levels" or "many stages", will be a collection of libraries and programs for video game development in Java. It is available in the GitHub repo linked here.

Specific plans will be described later in this post, but in general Polyscaena will consist of an application framework with associated libraries and tools for processing custom image and audio asset formats and level design. The core of this project (the application framework) is something which I've worked on in other programming languages off and on for many years, but I've never done anything further with it before. For this new iteration of the game development framework project, I'm choosing Java for platform compatibility since I recently switched to a MacBook and I've only used Windows and Linux PCs before.

The purposes of this project are to provide me with a platform on which I can create other products (actual games) and to publish the work on it along with these blog reflections - I'm hoping that having this public platform will motivate me to stick with the project even when I have to take breaks from it for extended periods of time due to other responsibilities. In my past versions of this project, I have started with a smaller scope, but one which didn't really lead anywhere. While before this project, which has gone under many different names, was just a general application development framework which could be used to make video games, this project is intended to eventually include a level editor and player, providing a platform for me to create interactive levels (essentially self-contained games run by a level player program developed under this project) using the products that come out of the project. Eventually, since this project will always remain under the MIT software license, I hope that it could also serve as a platform for others to make levels for themselves to share.

As of now, the software products this project is intended to produce are:

  • A base framework - The general application development framework which handles logging, windowing, user input via mouse and keyboard (I'll only be targeting PCs and don't intend to add support for game controllers through the JNI), network communication, audio, timing, simple 2D graphics (probably processed on the CPU only), and basic scene management

  • An asset I/O library - Some code for reading and writing audio and images and/or animations in a custom format which I'll specify later in the work on this project and which will be used exclusively by the base framework

  • An asset converter program - A utility which, as an extension of the asset I/O library can read various formats of audio and images, process them, and use the library to write them back out in the custom formats the base framework will use

  • A level management library - Code for managing levels (everything needed for an abstract self-contained game including control bindings, images, audio, NPCs and game objects represented as DFAs, even management, etc.) and reading and writing them from and to a custom file format which I'll specify later in the work on this project

  • A level editor program - A utility which, as an extension of the level management library and the base framework, can open and modify the custom level file format

  • A level player program (Polyscaena) - A utility, named after the project itself as it will ideally be the most public-facing part of this collection, which uses the level management library and the base framework to read and play the custom level file format with some notion of having all the levels a player has downloaded/received in some kind of universe/game-world

My vision for this project, mostly for the purpose of keeping everything memorable and understandable for myself when I take long breaks and then return to this project, is to use only base Java for all the programming. I don't intend to use OpenGL, libraries for game controllers, or anything else that requires third-party libraries or using the JNI. This also has the benefit of not compromising cross-platform compatibility of the project, anything that has Java installed should be able to run the software. Further to the point of keeping everything understandable to my future self, I have learned many programming idioms and patterns over the years I've been iterating on this project which I do not intend to avoid in this new version even if they may not be the most efficient or elegant way to work anymore.

The idea of having the Polyscaena level player program use some interface to load levels, which players could acquire anywhere through the web, file sharing, or physical media, into an interconnected game-world is core to some future intentions I have for the project. In the future, I would like to create a series of levels myself and sign them as core to the project. Nostalgia for the wild-west zeitgeist of the early 2000s web and for the 2010s ARGs and media is also a major factor in my re-creation of this project after so long.

Stay tuned for updates!

March 30, 2026 - Ordiludus