top of page

Custom Engine

ESPIO

ESPIO is a custom Game Engine built in C++. It will be used to create Turn-Based-Combat RPGs with systems that are heavily influenced by player choices.

Click a link to jump to that section

Gameplay Systems

GoogleDocs.png
GoogleDocs.png
GoogleDocs.png

Click a file to see that system's documentation

Combat System

combos.gif

Combat is performed by timing Combo InputsCombos come from the weapon equipped and can have different patterns.

For every successful hit, the attack will do more damage.

Free Shooting

shootinbattle.gif

Free Shooting allows the player to deal extra damage before attacking.

Enemies may have weakpoints to deal or open up extra damage.

Some fights will have environmental hazards to shoot and affect enemies.

Defending

defense.gif

When an enemy attacks, the player can Block, Dodge, or Parry.

Block - Hold the block button and take 1/2 damage.

Parry Let go of the block button at the right moment to counter attack.

Dodge - Press the dodge button at the right moment to avoid damage

Overworld Combat

overworldkill.gif

In the overworld, the player can shoot or melee attack enemies to lower their health for a fight, or skip it entirely.

Why Skip A Fight? - This makes getting through areas faster

Why Enter A Fight? - Fighting offers more rewards!

EXP System

EXP.png

EXP is given to the player based on how much they interact with every system. Using an item, landing combos, using skills, and defending all reward more EXP to the player.

Reputation System

Reputations.png

The Reputation System allows the player to interact with the world

and build relationships among factions.

Ways To Increase Reputation

  • Do quests for factions

  • Engage with Shops from factions

  • Interact with NPCs from factions

Ways To Decrease Reputation

  • Attack a non-hostile NPC of a faction

  • Do quests against the faction

Friendly Factions

Building positive relationships with Friendly Factions increases ways a player can engage with that faction.

Some features include:

  • More quests from that faction

  • More side stories

  • More shops

  • Shop items become CHEAPER

  • New skills and abilities to unlock

Shop from a Neutral Faction

shop1.png

Shop from a Friendly Faction

shop2.png

Enemy Factions

When a faction is hostile towards the player, they will:

  • Attack the player on sight

  • Will not open up shops or offer quests

  • May lock off access to certain areas

follow.gif

Morality System

The Morality System aligns players on a "Good" or "Evil" scale that affects how the game plays out.

Choices affect where players fall on the Moral Alignment.

This system is inspired direction from Star Wars: Knights of the Old Republic

19e48384-1ae1-4784-9cd8-765578cf4a3c_749x280.jpg

Pleading System

Plead.png

Pleading allows the player to directly interact with the Moral System.

When an opponent is pleading for their life, the player has a chance to slay the surrendering enemy.

Sparing the victim may increase Moral.

Killing the victim will decrease Moral.

Dialogue

choices.gif

Dialogue options allow players to change how they interact with the world.

Some dialogue options are only available based on your Moral.

With Good Moral, the player cannot select Bad Options.

This reinforces the player's choices on where they align on the Moral Scale.

Engine

ESPIO is a custom 2D game engine built from scratch in C++ and SDL2

Entity System

Entities.png

ESPIO uses an inheritance-based entity hierarchy.

A base Entity class defines shared behavior and all game objects derive from it:

Position, Collision, Rendering

Player, Enemy, NPC, and Chest each extend Entity with their own logic while sharing the same update and render pipeline.


This architecture lets new entity types be added without touching existing systems, and keeps game logic cleanly separated from entity behavior.

In-Engine Editor

editor.gif

ESPIO uses a fully functional in-engine level editor built with ImGui. It can can place, configure, and save entities directly on the map without touching code or external files.


Features include:

  • Grid-snapped placement with ghost preview

  • Place and Edit modes for creating and modifying entities

  • NPC configuration: name, ID, stats, type, faction, dialogue ID, shop assignment

  • Chest configuration: gold amount, item drops pulled from the live item database

  • Texture variant dropdown with live sprite swap

  • Per-map auto-save and save/load persistence

Data-Driven Pipeline

json.png
json2.png

All game content in ESPIO is defined in external JSON files and loaded at runtime. Dialogue, quests, weapons, skills, items, shops, and enemy templates are authored as data.

Map & Trigger System

tiled.png
transition.gif

Maps are authored in Tiled and exported as JSON. The engine parses tile layers for rendering and collision, and reads object layers for game logic:

Dialogue triggers, map transitions, scripted battles, and entity placements.


Event triggers support conditional logic via the flag system: a trigger can require a flag to be set before it fires, enabling quest gates, one-time events, and branching world states.

Unity Prototype

I originally prototyped my system ideas in Unity. This video features a system not yet in the engine: Bounty System.

Each system was built and playtested to see if my game was worth making.

image.psd(1).png
image.psd.png
linkedin.jpg
bottom of page