February 2017 Postmortem - Lumberjack Online

This February, I worked on a game called Lumberjack Online - The world's first massively multiplayer lumberjack game. Probably. A friend and I have had a long running joke about a game where all you do is chop down trees, and then those trees would grow back in real time. Real time as in, 20 years for a tree to grow back. So, I decided to run with this idea (minus the tree growth, for obvious reasons) and at the same time, learn some more about game networking. Unfortunately, It didn't really work out. The actual MMO part wasn't that difficult. Within a few days, I had players connecting to a authoritative dedicated server (which could be run headless on linux) and chop down trees ...

January 2017 Postmortem - Asteroid Quest

I've been programming since I was about 11 years old. It's always been a goal of mine to make games - but it has been a path I have deviated from, in order to explore different aspects of the profession. After joining and creating RentMi, launching the Anti-Social Club, and working on Grim Workshop for about a year, I realized that it was time to get back to what actually brought me into software development in the first place: games. So, during 2017, I am attempting to create (and finish) one game a month. This is meant to be an exercise in game programming, design, the ancient art of actually finishing projects. This month, I made Asteroid Quest. It's a space themed shooter where the ...

The Tragedy of Tree Placement

In my current game project, I recently ran into a bit of a snag. I needed a way to generate a natural looking distribution of trees, as my current method of randomly placing them within a disk wasn't working out too well. This article means to quickly discuss my attempted methods of tree placement, as well as the solution to my troubles: Poisson disk sampling. Random Placement As mentioned above, the first method I tried was simply random placement within a disk. The image below shows this in action. It doesn't look too good. It's easy to keep trees from spawning on top of each other(I just check that the position is clear before placing a tree), but that still doesn't solve the issue ...

Z-Sorting in 5 Minutes or Less

For the past two months or so, I've been working on building a full game from my recent Ludum Dare entry, Celebration of Jand. For the most part, everything has been smooth sailing. However, I ran into a small(though important) issue and decided that it might be fun to write a tiny blog post about the 5 minute fix. The screenshot below illustrates the issue: As you can see, the peon is being rendered on top of the tree, even though according to his position in the game world, he would technically be "behind" the tree. I say "behind" because this world isn't exactly 3D. Since the game is rendered completely in 2D, I have to do a little bit of black magic in ...

Ludum Dare 34 Postmortem - Celebration of Jand

Another Ludum Dare has come and gone, and I finally got all the free time I needed to participate. For those who have been living under a rock, Ludum Dare is the largest and longest running game jam in the world. What's a game jam, you ask? A game jam is when you have a limited amount of time to create a game (in this case, 48 hours), and you are often given a theme that you have to work with. This Ludum Dare was actually an interesting one, because for the first time ever, there were two themes. This was a result of a tie in the theme voting. Rad! Anyway, I loved both the themes: "Two button controls", and "Growing". I like simple ...

The Timeless Art of Raycasting

This week, I decided to take a little breather from my current project, GameLad, and hack on something that I've been interested in for a long time now: raycasting. I'll start with some history. Raycasting is not, by any means, a new technology. It's been around for a while, and was, perhaps most notably, used for the 1992 game Wolfenstein 3D. In the days of early gaming, computers were too slow to render 3D graphics in realtime, and developers needed an alternative rendering technique. Thus, raycasting was born. The whole concept behind raycasting is the usage of screen rays to transform a 2D map into a pseudo 3D projection, with a few restrictions. These restrictions, however, result in a blazingly fast (and fun) rendering system. ...

Not Everyone Needs to Learn How to Program

Today, it isn't unusual to come across some mention of how "everybody should be learning how to program". However, programming is not for everybody, and such a mindset is a bit ridiculous. Today, programming, and the ability to create software, has never been a more desirable and critical skill. Technology and software is everywhere, and it seems to manage pretty much every aspect of human life. Therefore, the desire to create more technologically literate students is understandable. Regardless, education should be centered on more important, fundamental skills, such as reading, writing, and math. In terms of education in math and science in the world, America has been falling behind, and is currently ranked at number 28. Reforming education to produce more critical thinkers and technology ...