How far can I make this go… ![]()
How does making a chain of nice replies sound…?
I mean…you put the option so I wouldn’t be surprised if people clicked it ![]()
Welcome back !
congrats !
I started coding again and I completely forgot that this was actually fun
I live in a monkey what??
lol it’s an opinion amdu added it as an option
you put the option bro dont be mad when people choose it
Alright, I finished the essay, so now I can post this. Today’s essay about the Marvel-Of-Software-Engineering is going to be about something slightly different as compared to what I wrote about in the past. Today, I will be discussing a specific video game.
Technically speaking, video games are considered to be software. Although they are considered a rather unconventional/unique kind of software, since video games are now built with more than just functionality and efficiency in mind (e.g., enjoyability and replayability). There are video games out there that are truly masterpieces on the technical sector with how they handle optimization and graphics. The following essay is definitely considered one of these said “masterpieces”
Well… That’s enough yap for the preface. Let us now begin the essay.
The late 20th century has been a godsend for all gamers. There were so many influential and culture-breaking video games being released back then, like Tetris or Super Mario Bros. Honestly, there were so many that the debate about which is the most influential game of all time is probably one that might never be concluded. But the one game we can definitely consider for a contender is one known as DOOM.
DOOM was made in a studio known as ID Software. The team’s lead developer was John Carmack (who was one of the cofounders of ID Software). His work in the video game DOOM is what made him one of the greatest programmers of all time. The game was made to apply Carmack’s 3D graphics engine. The development process took over 1 year, and DOOM was released in 1993. It was an instant hit. It was so popular that in one case, it crashed the entire network of the University of Wisconsin due to the sheer amount of traffic.
(John Carmack, left blue shirt, with the DOOM development team)
The 1993 game is very simple. You are dropped in a room and need to find the level’s exit to escape alive. You’ll face some evil monsters along the journey, so you will be given a gun to defend yourself, although you can find more powerful weaponry hidden inside levels. There is a final boss, and you can win the game. It really wasn’t anything complicated on the player’s end, but the inside of the game was a whole different story.
Now, one of the crazier things about DOOM is that while it appears as a 3D first-person shooter, it really is not a 3D game. Rather, it is a 2D game with the illusion of 3D space. The floor itself is a 2D plane. The enemy monsters aren’t 3D models but pixelated 2D sprites, and you can’t stack multiple 3D-looking walls/blocks on top of one another. So calling DOOM a 2.5D first-person shooter game is more strictly accurate.
Now, there did exist games that were considered 2.5D before 1993, such as Wolfenstein 3D (which was also developed by ID Software). But DOOM added a few things that made their 3D-looking illusion stand out a lot from most of the 2.5D games back then. One of which were non-orthogonal walls, objects that intersect with the floor at angles other than strictly 90 degrees. Objects could now be diagonally slanted (e.g., forming hexagons), while in a lot of previous 2.5D games they were always upright at 90 degrees.
(Look at the boats circled in red; notice the angles and slant in the front of the boats, forming a coherent polygon and all that.)
So, how did DOOM render these shapes? As said before, DOOM’s floor/ground is entirely a 2D plane that creates the illusion of 3D. To form the shape of the non-orthogonal and orthogonal objects, DOOM placed a bunch of (x,y) vertices onto the plane, then lines would be drawn to connect all those vertices with each other to form a coherent polygon, making up the top-down-view outline of the non-orthogonal architecture. The polygons are called sectors, and the sector is assigned a specific height to give it 3D-like volume. Textures are then applied to these structures to decorate stuff and suit the themes.
This is essentially the main basis of 1993 DOOM’s architecture; everything that looks 3D is merely made out of 2D polygons with specified floor heights, and everything is made from sectors. A building in DOOM is a drawn square on the 2D plane with floor height and some texture applied to it. A staircase in DOOM would be made out of multiple rectangular-prism-looking sectors placed near one another and in ascending heights.
But there is nuance to rendering like this. DOOM can’t just render all the sectors in one go; it’s a massive performance issue. Computers in the 1990s were far slower and less powerful than anything we got in today’s world. So, if you were to try and render all the hundreds of sectors in one sitting on a 1990s PC back then, then the game would either be extremely laggy/unplayable or crash entirely. Also, some sectors are purposefully hidden from the player’s view, so it would be a massive waste of energy to render those places.
To ensure smooth performances, DOOM would naturally have to limit the amount of stuff they render at once then. But how do they do that? John Carmack implemented a genius technique called Binary Space Partitioning (BSP). In the very first step of this technique, the 2D plane with all the sectors would be repeatedly halved into several chunks called subsectors. This is considered the “partitioning” part in BSP. Each subsector is placed as a node in a binary tree, which is considered a graph (mentioned in the Google Maps essay). So here’s a quick excerpt from the Google Maps essay that explains what a graph is:
In the case of BSP and not Dijkstra, the player will be placed in a node/subsector in the binary tree depending on their (x,y) coordinates on the 2D plane. The algorithm starts up at the root node (the very top) and traverses down through the graph until it reaches the player’s subsector. When it does reach the player’s subsector, the stuff in that subsector (along with nearby subsectors) will begin to render themselves in the game. When the rendering eventually reaches a point in which the screen is completely covered to the brim with walls, it will all stop.
When 1993 DOOM came out, it also came with a multiplayer option. Typically, players would play with one another over local networks. In multiplayer, multiple players could either work together to beat the game, or they could do a battle royale against one another (deathmatch). Unlike modern video games with multiplayer, DOOM did not have a central server in ID Software offices to handle multiple inputs and constant data syncing between multiple users. So that brings up a nuance in how the multiplayer option worked, that is, it used something called peer-to-peer architecture.
So, what is this peer-to-peer architecture that I speak of? In a way, it’s like each PC is its own server. Each computer involved would be running the exact same video game simultaneously, and user input data would be shared with the rest. For example, if player #1 pressed a button to fire bullets, then data should be synced across all other players’ PCs that display the bullet being fired by player #1. If any particular computer lagged while receiving data, then all the other computers would undergo lag as well.
(…)
As I mentioned before, DOOM was not the first 2.5D first-person shooter game to ever be brought into existence. But the sheer amount of features and impressive graphics propelled the 1993 DOOM to a very special pedestal. In today’s era, we often find that some of the most popular games are the first-person shooters with multiplayer (e.g., Valorant). These are genres that DOOM essentially carried into mainstream status through its cultural impact.
If it wasn’t made obvious already, DOOM really did change gaming forever; it is truly one of those games that one could call “the most influential."
Favorite book? Put it in as your answer for the Question of the Week!
YO @AlexTheGoober63 AND @GoObErsandwichdude64 I FOUND YOU GUYS AT THE GROCERY STORE!!!
Just asking, not trying to do this any time soon, but later in the future, can we modify your game and clearly credit you. If this is what you mean in the text above, you don’t have to answer this question.
I suggest you read Chimbro’s post again. The short answer is, “No.”
13 likes on this, nice! Glad to see that people are enjoying the type of stuff I’m posting in the chatting area now.

Anyways, I’ll probably halt a lot of my progress for the tech essays during September when I head off to college. Now, on that note, the next 2 Marvel-Of-Software-Engineering essays that I’ll post on the forums will be about:
My friend if you really want the answer, all of the peices are present, I need not to assemble it for you. That would defeat the purpose.
bro he said no alreadyyyyy ![]()
you need more…
i am seeing posts appear out of nowhere in realtime, and it terrifies me O_O