Python Cross-platform Unit Testing Continuous Integration Neo-Vim Linux

Introduction

Some time ago, I decided to dive deeper into high-level programming languages. At university, I learned Ruby and completed a NodeJS course, both of which were enjoyable experiences. However, my thirst for knowledge pushed me to explore more. Many of my colleagues, especially those working in data science, often mentioned the power of Python—particularly for processing large amounts of data. That piqued my curiosity, and I thought: Why not Python?

I wanted a project that would not only teach me Python but also challenge me creatively. The question was, what kind of project should I start? I’ve always been passionate about video games and fascinated by how they are built. In university, I was part of a team that created a roguelike game in C++ using only a CLI (command-line interface). It was a fun project, but I wanted to push the idea further this time.

Rather than just remaking what I had done before, I thought, why not expand the concept and create something more sophisticated? Python, with its powerful built-in methods and excellent support for data management, offered a perfect opportunity to focus on aspects of a game that rely on logic and data—such as dialog systems, character relationships, and procedurally generated environments.

That’s when the idea for LoreEngine was born—a game engine not focused on graphics or physics but on storytelling and world-building. I envisioned an engine that could handle complex conversational systems, character sympathy levels, faction diplomacy, and procedural map generation. Essentially, LoreEngine would be a lore generator: a tool to generate the living, breathing worlds behind a game.

First Steps: Learning Python and Project Setup

Before jumping into coding, I followed my typical approach: research. I looked into various Python projects, starting with small ones to familiarize myself with Python’s syntax and core concepts. This helped me understand:

After gaining some initial experience, I started by creating a basic module and an executable script that could load the module for testing. The idea was to have a framework I could continuously build upon while experimenting with different components of the engine.

(TODO: Expand this section further)

Building the Core of LoreEngine

LoreEngine is intended to be a game lore generator, focusing on various in-game systems that shape the player’s experience. Here’s an overview of the core elements I’m working on:

1. Procedural Map Generation

Instead of manually designing maps, LoreEngine will generate them procedurally. This means that every game will have a unique world layout, based on certain algorithms and rules. The idea is to ensure a dynamic and replayable experience.

2. Conversation System with Sympathy Levels

One of the key features is the dialog system, which goes beyond traditional static conversations. In LoreEngine, characters will have varying levels of sympathy toward one another. This means that how characters interact will depend on their past interactions, relationships, and choices the player makes.

For example:

3. Character Relationships and Factions

Characters won’t just exist in isolation; they will belong to factions that have their own rules, allies, and enemies. The goal here is to simulate real-world dynamics where relationships matter:

The player’s actions could influence faction relationships, adding another layer of depth to the game world.

4. Diplomacy and Politics

Beyond simple faction systems, LoreEngine will have a diplomacy system where NPCs can negotiate, form alliances, or betray one another. This allows for a living world where decisions have long-term consequences:

5. Story and Event Generation

One of the most exciting features I’m developing is the story generation system. Instead of following a pre-defined narrative, LoreEngine will dynamically create stories based on the player’s interactions with the world. This could lead to:

In short, LoreEngine aims to generate an evolving world where every action has a ripple effect.

Unit Testing and Code Quality

Since my goal is not only to build a fun and engaging project but also to learn good coding practices, I’ve placed a significant emphasis on code quality and testing from the beginning. Here are some key points:

Challenges and Thoughts

Working on LoreEngine has been a tremendous learning experience. While Python is an excellent language for rapid development, game engines—even ones focused on logic rather than graphics—are complex. Here are some challenges I’ve faced so far:

Conclusion

LoreEngine is still in its early stages, but it has already taught me so much about Python, game development, and project management. It’s a passion project that lets me combine my love for video games with my desire to learn new programming skills.

You can follow the project’s development on my GitHub repository.

This project is a testament to the power of curiosity and self-learning. By continuously challenging myself, I’m not only mastering Python but also exploring the vast world of game design and storytelling. And most importantly, I’m learning how to write clean, maintainable code backed by thorough testing and CI practices.

Stay tuned for more updates!


Related entries

SIDERA's Datawarehouse
Curiosity
Proficiency
My Custom Linux Desktop Environment
Curiosity
Resilience
Linux and Face Recognition Authorization
Curiosity
Fixing a Broken Rooted Tablet
Curiosity
Resilience
Problem resolution
SIDERA
Team work
Leadership
Catenary Energization Algorithm for SIDERA
Performance
Curiosity
Best practices
SENDA
Best practices
Proactivity
Team work
Proficiency
Leadership
Genetec SDK Integration in SIDERA
Best practices
Proactivity
Problem resolution
Proficiency
Cylock
Curiosity