ROllerozxa

ROllerozxaRSS (Atom) feedGitHubMastodonYouTube

I'm a university student currently studying software engineering as well as an open source developer. You may know me as the project maintainer of Principia or for my contributions to Luanti (formerly Minetest).

This is my site where I write about what I do and about whatever else interests me, in the case that someone else finds it interesting.

Wanna read more about me or about what I do?

Latest blog posts

Screenshot of the Ly display manager at the log in screen. There is green text flowing down the screen in the background, and an ASCII art box is visible in the center containing fields for entering user credentials.

Display Managers, and Ly

1002 words

A display manager is an essential component in a typical Linux graphical environment. Its origins date to the original design of the X Window System with client and server components that may be on other ends of a network, managing authentication for remote graphical X environments.

However, for modern personal computers running a Linux distribution nowadays, it is simply the intermediate between the initial bootup sequence and starting your window manager or desktop environment of choice, providing local account switching and authentication. It disappears as soon as you log in, and in many cases is seamlessly tied to your desktop environment of choice making you not even notice it.

Screenshot of some C code with a screenshot of a message box laid on top of it describing an assertion failure occurring in the shown code. An X_X (dead eyes) emoticon is visible below the message box, signifying some kind of embarrassment.

How (not) to compare strings in C

2140 words

When you are previously used to working with higher-level programming languages and pick up a lower-level language, there tends to be a lot of things you previously took for granted working at a higher level that suddenly become visible. And the programmer becomes more thoughtful, more resourceful.

But there are also things that you think may work like they did in the languages you were previously used to, while in reality being completely different. One such example would be strings in C, specifically how to compare two strings against each other, and how not to compare them.

Screenshot of the Google Play Console dashboard, with a red banner at the top saying "Your Developer Profile and all apps will be removed from Google Play on 3 February 2025", as well as a red warning message on the home page saying the same thing.

Goodbye Google Play

1229 words

As of the 3rd of February this year, my Google Play developer account will be permanently deleted, along with the apps I had published throughout the years. It was my decision to do it, but my hand was more or less forced by Google’s new Google Play developer verification policy update which makes it not really viable for me as an individual app developer to remain on Google Play anymore.

Screenshot of a Windows desktop, showing a game.exe file with the LÖVE icon to the left, and an arrow pointing at a box_smasher.exe file to the right with the Box Smasher logo. A rcedit.exe file is visible in the center right above the arrow, symbolising the process of editing the executable metadata.

Editing Windows executable resources programmatically with rcedit

1164 words

Sometimes you are in a situation where you need to modify an already built Windows executable, whether it be a program without available sources or where it is more convenient to use already available prebuilt binaries for your own purposes. In this case you usually also want to edit the metadata embedded within the executable as resources.

When wanting to distribute a LÖVE game for Windows, I wanted a convenient way of modifying the resource metadata of the LÖVE runtime executable. I ended up finding a very useful program for that purpose, named rcedit.exe.

Screenshot of the main menu of Tensy, showing the text "Tensy" wiggling up and down in a sine wave pattern in front of a striped background. (The text rendering is done through what is brought up in the blog post)

Drawing text in the SDL renderer without SDL_ttf

1994 words

When you want to draw text in SDL, you would usually want to use SDL_ttf which in turn depends on Freetype for font rendering, giving you nice rendered fonts. But what if you do not want this? Maybe you just want some basic text rendering for a small game, and want not include the extra dependencies because something simpler would work just as well.

When I began working on a game written in C and using SDL, I wanted to try to implement my own font renderer rather than relying on SDL_ttf. What I wanted was just a way of drawing a pixelated monospace font, and it turns out to be quite simple to do so when you’re able to reduce the scope of the implementation. This blog post is a retelling of the process of doing just that.

Screenshot of the front page of principia-web.se, showing the navigation bar and the featured levels at the time of the screenshot.

The story of principia-web

3444 words

principia-web is two things: it is both an open source implementation of a Principia community site that can communicate with the client, and it is the name of the new Principia community site. While Principia is now an open source project with the source code being available for everyone to read and understand how things work, when I started working on principia-web in late 2019 this was far from the case.

Back then, it was still an abandoned proprietary game with little to nothing known about its internals, file formats or how it interfaced with the community site. The official community site had shut down in early 2018 and the remains of the community resided in a small Discord server, which I was a part of. But I was determined to take on this project, which I did not fully know the scope of at the time, and create a new website for the community to upload and share Principia levels.