.

r

o

u

n

d

s

Homepage

.Rounds was my first programming adventure. It was a CSGO matchmaking platform designed to facilitate the creation of private matches without the hassle of setting up a CSGO Steam server.

I learned a lot while working on this project—it became my personal programming teacher.


Origins

March 2021 to January 2022

The first version of .Rounds was developed entirely in vanilla PHP and MySQL, which turned out to be a disaster. My code lacked structure and reused the same logic without using functions.

I’ve always enjoyed naming my project versions; this one was called Alyx (after the Half-Life character). Alyx was chaotic, yet it served as the primary codebase from March 2021 to January 2022.


Backend

The first version used a poorly structured backend written in C++. It consisted of only two files: one with the main function and another header file containing all the backend logic. Despite its simplicity, the backend implemented a surprisingly complete feature set.

The backend supported two modes:

  1. Sideload: Interacted with the Source Dedicated Server (SRCDS) to activate or deactivate plugins based on user selections.
  2. Automatic Setup: Monitored the database for new entries and, when detected, initiated the setup of a dedicated server using the chosen plugins.

This setup allowed users to select a game mode (a set of plugins) and a map, while the backend automatically created the server and passed the IP address and password to the user.

Although the backend was terribly coded, it was the last version capable of creating custom servers. The rewrite of this backend came later, when Prospekt and .dot came around.


First Rewrite

January 2022 to September 2022

In January 2022, I ended development on Alyx and began working on the next generation of .Rounds, called Prospekt (continuing the Half-Life-themed naming convention). Prospekt aimed to improve upon Alyx with a rewritten backend to support new features and streamline the codebase.

While this rewrite wasn’t perfect, it helped me identify gaps in my programming skills, particularly in using functions effectively and better understanding PHP application architecture.

Prospekt shared much of Alyx’s codebase, so development stalled. On September, 2022, I decided to start from scratch, creating my own PHP framework to implement everything I had learned over the years.


Prospekt 2.0

September 2022 to October 2023

As the project grew, the patched-up old codebase became insufficient. I decided to develop a new framework called .dot, which provided the tools needed to achieve the project’s goals.

You can learn more about .dot on my portfolio entry.

Prospekt 2.0 introduced a more flexible and scalable architecture, enabling the integration of advanced features. I explored HTML frameworks, components, routing, JS/CSS integration, plugins (extensions), internationalization (i18n), and more.

An ecosystem of .dot engine extensions emerged, starting with MySQL connectors and later incorporating WebSockets and Three.js support, all backing up .Rounds.

The production workflow for .Rounds in its final version looked like this:

Infrastructure


Customization

UI/UX

Around this time, Spotify released a desktop client update that inspired a complete UI redesign for .Rounds, adopting elements of Spotify’s design language.

Oppenheimer

.Rounds already supported user customization, but I expanded it further. Using a console command, players could set a primary color, which dynamically updated the entire UI, generating a color palette based on their choice. This was one of my favorite features, reflecting my passion for personalizing websites.

Agents

Agent customization was a key feature in .Rounds. Players’ in-game IDs (agents) doubled as their presentation cards within the platform. I spent days in Blender (with no prior 3D design experience) converting Source Engine MDL files into GLB format for use in Three.js/WebViewer.

I also decompiled celebrated animations and developed a dynamic player animation system. While this feature, called .R engine, never reached production, remnants of it can be seen on the hero section of this website.


Console

I’ve always loved developer consoles, so I made sure .Rounds provided advanced users with full control over its features via a console interface. To this day, I aspire to create a universal console that interacts with APIs through commands.


The End of .Rounds (Prospekt Version)

The last production version of .Rounds was released in September 2023. As personal responsibilities increased, my 12-hour daily development routine slowed, with days passing without commits.

The Prospekt version was discontinued with the public beta of CS2, requiring a complete project reboot rather than a rewrite. This marked the end of a significant chapter as I shifted focus to smaller projects and freelance work.


Project Reboot

In 2024, with a new game and engine, reviving the project seemed logical. I experimented with Vue.js but ultimately discovered Next.js, which became my favorite framework. This led to a small demo project named .Rounds, allowing users to browse the Valve Server list with a better UI/UX than the Steam Client. During this time, I've develop the demo ThreeJS scene from the contact me section on the index of this portfolio.

For now, .Rounds remains a learning and experimentation tool. Perhaps, in the future, another ambitious idea will breathe new life into this project.