PowerfulBacon / GJ2022

A 2D sandbox game where you command pawns to construct a space station.
5 stars 0 forks source link
engine game opengl rendering

Requires .net framework 4.7.2

GJ2022

This project is a highly efficient 2D game engine, running in C# using openGL for graphics. The rendering engine is a heavilly modified variant of a 3D block based rendering engine I made for another project that never got finished, with optimisations for 2D graphics, large amounts of code cleanup and some pretty big refactorings making it almost completely seperate from the original renderer. The game is inspired by games such as Rimworld and Prison Architect where you command pawns to construct and perform actions for you, while you exist in a god-like observer state, as well as taking inspiration from Space Station 13, a simulation/sandbox/social deduction game where you play as a crewmember aboard a technologically advanced but cursed space station. The game and gameplay itself isn't that impressive, however the framework for the engine and possible expansions that can be made in the future is where this project makes up for that, with expandable frameworks for:

New rendering systems and shaders
New easilly addible entities
New AI behaviours and pawn actions
New subsystems that can perform processing

While it would still need a lot of work to become a fun and playable game, this project is successful as a prototype / proof of concept. A lot of time was spent making the engine robust, so there wasn't as many gameplay related features added as first hoped, however in the future it would be nice to add pawn health systems, atmospherics, environmental dangers, hostile NPCs, improved textures for pawns etc.

The main issue with this project is that due to running out of time, there is almost nothing in the game related to the theme of Duality and the theme was pretty much abandoned during development to focus on creating the internal systems.

Documentation

TypeDef: https://hackmd.io/O7jh4iHcQ-KjkA7b_3P8Xw?edit

Initial Game Plan

A game made around the theme of Duality.

The game idea is that you view down on a space station, can place rooms and build it however you like. You can play the game however you want and help who you want. The idea is to be a mix between a zen-like game where you can't lose and can't win, but at the same time a game where you make tough decisions to keep the people you want to be alive alive.

While the core idea is around the duality between a zen like sandbox game and a stressful decision making game, other ways to fit the theme are planned to be added. The game should have some kind of anomalous thingy that lets you get powers, but at the cost of something equally bad and good happening.

Will I be able to implement all of this in 10 days without using a game engine? Probably not, but hopefully there is a basic simulation by the end of it where you can watch your people and build a station.

License

All assets including icons and sound are under a Creative Commons 3.0 BY-SA license unless otherwise indicated. https://creativecommons.org/licenses/by-sa/3.0/ The majority of game assets are taken from the Space Station 13 codebase 'Beestation', https://github.com/BeeStation/BeeStation-Hornet This does not cover the code for the project.

Update:

The game plan has changed to be a rimworld style game where you build a space station. Similar to before, except now rather than pre-determined room sizes the rooms will be designed by drag and drop. This should be about the same difficulty to perform, although might require less abstraction down the line meaning more features will be required, however pathfinding should be easier and the game looks better and plays better.

image

Code:

Subsybstem - Subsystems run processes on a seperate thread. Managers - Managers store data. Used when seperate thread processing isn't needed for subsystems. Utility - Stores no data, provides helper methods. GlobalDataComponents - This should be managers (//TODO)

Screenshots

image

image

image

image

image

image

image

image

image

image

image

image

image

image (Running on the lab VMs)