Saturday, May 3, 2014

Just a random update

I decided to log in today and was poking around at my traffic statistics for this blog. In the past month, there have been 300 page views. It's not a lot, but it's also a non-zero value. It's interesting to see that I still get hits from my RogueBasin profile and random Google searches.

In case anyone was wondering, CyberpunkRL is no longer maintained. I'd release the source, but it's really not something I'm proud of. In the nearly 4 years since CPRL originally appeared here, a lot has happened. I finished my computer science degree in 2012 and I'm approaching 2 years of professional experience in software engineering. In career terms, that's nothing, but in just that short period of time, I have felt an immense improvement in my overall skill level.

Nearly everything I did on CPRL was self-taught. I would blow off homework assignments to stay up late reading articles on roguelike development and C# programming. Looking back, my work on CPRL was cute in its naivety. I would just open up my IDE and hack away until things worked while scratching off tasks on a very messy paper todo list. If I broke something, it meant a late night of debugging. I didn't design things. I didn't use version control. It was frustrating, but it was also very fun and rewarding

These days, I find it difficult to get back into hobby game development. I work on enterprise software all day and there's a lot of process involved in getting something into the code base. There are so many aspects to development I didn't even know existed when I worked on CPRL. I love what I do, but it's changed me. It almost hurts me to start writing code without a JIRA issue, a design, a class diagram, and unit tests. This adds a lot of overhead.

I haven't given up on game development as a hobby, but I have a lot less time, energy, and motivation. CPRL will forever be one of my dream projects, and it has been reincarnated in so many different forms, I have lost track of how many times I've restarted it with a fresh take on the concept.
One of the more recent, and more radical spiritual successors of CPRL
Nothing would make me happier than to eventually release a solid, fun cyberpunk themed roguelike game, but sometimes my perfectionism, work life, and personal life get in the way. Just know that at any give time, I probably am working on some re-imagining of it so maybe some day you will get to play CyberpunkRL. Who knows?

Thursday, June 28, 2012


I apparently have some sort of obsession with writing parsers, as I've already written like 5 different variations for CPRL alone. After many iterations, I've designed a data file solution that will hopefully be good enough to use for the game as well as other projects. It is an open source serialization library called SuperSerial, that will hopefully make my life much easier when I finally get around to working on game stuff again. It's not quite finished yet, but I don't expect it to take much longer to get into a usable state.

My next order of business will probably be to work on the graphical engine some more in order to optimize it and add features. After that, I'll get back to game stuff.

I haven't been working on personal projects much lately because I have an internship this summer. After spending 8 hours looking at Java, I don't have much desire left to program at the end of the day. Fear not. I will never abandon CPRL. It may take a decade or two, but this damn game WILL get finished.

Monday, April 30, 2012

Character sprite

After putting it off for as long as possible, I finally decided to try my hand at a character sprite.

Here's a mockup of what it might look like in-game. Each piece of equipment is a separate sprite so it can be layered in-game based on what a character has equipped.
Roy Batty (right) faces off against a Tyrell Corporation executive and his two hired guns.

I'm not a great artist, but I think it will do for now. Some of the details are hard to make out, but as long as the sprites are varied enough, I don't think it should matter too much.

I've also been doing some work on a configuration file parser that will allow for pretty flexible data files and may be used for save files as well.

I changed the floor tile to make it easier to see characters.

Sunday, April 22, 2012

Today I learned the garbage collector and OpenGL do not cooperate

So I thought I'd be clever and write a finalizer for my Texture class so that it would call GL.DeleteTexture when the object was collected. Apparently I can't do that. CyberpunkRL has been a good source for learning new things about using unmanaged libraries in C#... except for the fact that I waste hours of my time trying to figure out these things.

In other news, I switched over to the new renderer with little trouble. All traces of SDL have been eliminated. Here it is in action, looking pretty much exactly the same as before.
I also got an infinite world implemented, but I'll eventually limit it to a finite sized city, like in the original releases. Unlike in the original version of the game, you move seamlessly between sub-maps, so no more running from cops by moving off the edge of a map.

I also made a few weapon icons.


Thursday, April 19, 2012

Graphics engine

I started this iteration of CPRL using a .NET SDL wrapper for the graphics, which I quickly discovered to have one huge flaw that would make it very problematic to do what I want to do. It was pretty much impossible to render sprites with shading or tinting in real time, which would be necessary for the lighting engine I hope to do. Even if I had decided to drop lighting I would still need it for drawing explored terrain outside of the current field of view. Rather than limit my options, I decided to write up my own hardware accelerated 2D framework using OpenTK. Being not very experienced with OpenGL, I was intimidated by the thought, but it ended up only taking me a day to get the core functionality I wanted.
Don't worry. The final game shouldn't look like this.
As you can see, it supports rotation, scaling, and tinting and is also relatively fast. The screenshot is just a sample I did to test as I worked on it. It's not quite finished, so I haven't yet integrated it with the existing game engine. On that note, I did throw together a few new graphics.
Fans of the Sega Genesis Shadowrun game may appreciate this screenshot.
My art really isn't that great, but it's easy for users to swap out tiles with their own, so custom tilesets can easily be a thing if the game ends up being good enough to have a fan base.

2:30 AM Edit:
I wasn't quite ready to call it quits after this blog post, but I did change gears a bit and do something that I've been meaning to do for a very, very long time.
I finally put that level generator to use!

Tuesday, April 17, 2012


Maybe this time?
What is this? The 5th restart? I'm really trying to stick with it this time. There are going to be some big changes in terms of setting and overall style this time around. More details inbound if this project actually holds together for any length of time. In the meantime, is this too dark?

Tuesday, January 4, 2011

I've had no desire to work on anything for the past few weeks...

But I think it's coming back to me. Today I dusted off CPRL and started on the dialogue system.

It's not much, but I think you get the idea... I also did some more map stuff, like making entities work. I still need to save them to the map files when each map is unloaded. Otherwise, they'll basically become a memory leak. At the moment, a map is a single 40x40 chunk of tiles with a small square building in the center. I really need to finish up that building generator I was working on...