A short story of redefining a game’s behavior

Imagine. You’re working on a server emulator for game. And it’s not a bad game, but it’s so heavily client-sided that developing a server for it is somewhat uninteresting. Even simple features, like NPC shops, might be client-sided, meaning you can’t ever have custom shops without client modifications. Even simple interactions, like dropping an item, might have certain undesirable client-side checks that make it so you can’t get rid of a subset of the game’s items. Client modification is always an option, of course, but as a server developer, it’s fun to push the limits of what you can do from the server, without touching the client. Not to mention, it’s always easier to not have to modify the client.

Last week I was asked a simple question on the Discord server for my Tree of Savior server emulator, Melia, in regards to reviving a feature that had been removed from the game, which lead me down a path that would remedy all of those problems for this particular project.

Continue reading “A short story of redefining a game’s behavior”

Simple C# Web Server with PHP Support using CGI

The world is full of capable web servers, but there might come a point, where you need a small, portable .NET web server. And for compatibility reasons, you might want to use PHP with it, but you can’t find any guides on how to do that. And for that day, I have written this post.

Continue reading “Simple C# Web Server with PHP Support using CGI”

Assembly: Redefined – Macros to the rescue

After taking my first steps in the world of Assembly, and getting my little extended Hello World running, I had learned that writing error-free Assembly code is by no means impossible, but you have to take great care to not make mistakes. I basically had to turn on my debugger after every bigger modification because I had accidentally broken something.

But just like C and other languages protect you from simple mistakes, like not unwinding the stack after calling a cdecl-convention function or addressing variables on the stack incorrectly, you can easily help yourself write cleaner, more robust code with the help of macros.

Continue reading “Assembly: Redefined – Macros to the rescue”

A little adventure into Assembly

A few days ago a thought popped into my head. “Hey, let’s learn how to write assembly!”

While I know the basics of how Assembly works, and even though I’ve read some Assembly code over the years while debugging or analyzing applications, I’ve never written an actual program in any Assembly language. That obviously had to change.

How hard could it be, right?

Continue reading “A little adventure into Assembly”

My thoughts about Go

I’ve always liked C and its simplicity, but it’s kinda tedious to write bigger programs in it, which is why I’ve always refrained from doing so. It’s not even the memory management, it’s simple things, like working with strings, or the overhead you have for calling “methods”, animal_do_something(animal). In comes Go, the programming language by Google.

Continue reading “My thoughts about Go”