This page will be moving. Again.
I started this thing on Blogger. I only wrote about 20-30 posts before moving it all over to Weebly. I’ve spent the last several years posting at least once a week to weebly and now I’m moving again. It’s just not the right platform for what I’m doing.
Last time the move wasn’t too much of a problem. A couple dozen posts ranging anywhere from a few hundred words to just around a thousand. That was mostly just a copy and paste job. Well, copy, paste, and change some links and image locations.
Now I have added more than 400 posts. A dozen short stories. Some interactive fiction. I can’t really copy and paste all of that. I couldn’t even begin to imagine manually fixing all of the images and links.
Weebly doesn’t offer a great way to download blog content so I had to rip my own site from their servers in a really clumsy way. It kinda of sucked, but I have all of the content sort of in a messy pile. Now I have to organize that pile into something I can put up again. So, what to do, what to do?
I wasn’t about to do it manually, so I wrote a program. A pretty simple C# program that sifts through the pile, pulls out each of the over 400 posts, dusts them off, updates the image locations, repairs as many of the links as it can, and writes them back into cleanly formatted new files with the proper names and dates. It isn’t a complex program, but I don’t really write this sort of thing so it was a bit of a challenge. It took the better part of a day to make sure that the resulting posts contain the bare minimum of errors. On the upside, it only took about a day. Trying to move them over manually would have taken ages and I can’t imagine how monotonously soul crushing that task would have been. Just taking the chance that I would accidentally read an old post was too much to risk.
I still have some organizing and design cleanup to do before I can fully move the site over to its new home. When that happens I will post again to mention any changes to the RSS feed. I have two or three bugs to squash before the full move but it should be no longer than a couple weeks away.
Best Games - Burnout Paradise
Does the idea of spinning donuts around the infield of a baseball stadium sound appealing? Would you like to launch a car off a ramp, sail an unreasonable distance, and nail a perfect 4 wheel landing losing no momentum? Would you like to nudge a supercar into a barrier and watch it crumple like foil knowing there would be no consequences or injuries? What if you could drive impossibly fast not only over the road, but through buildings, on train tracks, on park pathways, and more? Burnout Paradise has you covered.
Burnout Paradise might be a perfect driving game. You will notice that I didn’t write ‘Racing Game’. Burnout Paradise is a driving game. It’s an exploration game. It’s a toy car sandbox game. There is racing in it but it’s not, strictly speaking, a racing game. The draw of the game is not the racing. I suppose for some people it might be but the game isn’t really designed around the racing. It’s designed around the driving.
No matter what you do in the open world of Burnout Paradise, the game tracks it. How far you drive. How fast you drive. How much time you spend in the air. How many flips and spins you do. How many cars you crash, both your own and your opponents. If it’s a trackable stat the game probably tracks it. The game tracks it and then rewards you for it. It incentivizes driving over winning races or completing challenges. Burnout Paradise is a game about driving.
There are a lot of people who didn’t like it when the Burnout series shifted from the focused event based structure to a flowing open world with potential events at every intersection. There were complaints that it took too long to get from one event to another, or that it was too easy to get lost in the labyrinth of city streets and shortcuts. Not liking a game is no real crime. There are and were certainly other games for people who didn’t enjoy the open world of Paradise, but I can’t help but feel like they missed the point.
It’s a driving game not a racing game.
The events are secondary to the reason you load the game up. You play Burnout Paradise to drive. You play it to drive in the most irresponsible and chaotic way possible. You play it to manifest fantastical driving situations. You play it to enjoy the feeling of speed and impact and exploration.
Burnout Paradise is about driving and it is one of the best games.
Imagine you were to get to see some amazing old sculpture. A real museum piece. The Venus De Milo. You get your eyes on the Venus De Milo. You’re looking at it and you want to steal it. There is a museum curator watching you, there are security guards, other museum patrons, etc. There is absolutely no way they will let you do that. Also, the statue has to weigh close to 2 tons. You aren’t going to be hauling it out on your back, but you can take a picture of it. Maybe a lot of pictures. Maybe a lot of pictures with a camera that can capture depth and minor variations in the surface of the marble. Pits, cracks, dust, all of it. You and your camera take a quick buzz around the Venus snapping shots the whole way, and bug out.
Now that you have all of this information in images, it should be possible for you to start with a blank approximation of the Venus De Milo and recreate all of those details. Will it be exactly the same? No, of course not. Could you deceive the other art thieves with it? Will it look convincing enough from a distance to get you into all of the art thief parties? Only one way to find out.
Now since I do most of my art stealing digitally and figuratively, I set up a tool to make that high detail image capture easier.
You see, when you set up digital 3D models for use in real time applications, that is exactly what you do. You take heavy, detailed, high resolution art and you crush it down to something that a computer can draw to a screen 30, 60, 90, or 120 times a second. The better you can steal that detail and pack it up into images, the more convincing the final result will be.
Some stuff I have been working on required nice seamless tiles of high detailed fakery. There are tools and techniques that let you do this, but most of them are clumsy, slow, or expensive. I spent some time this past week to fix that.
Just to be clear, I haven’t made anything revolutionary here. This isn’t some sort of stand alone tool. I put together the equivalent of a carpenters jig. A simple tool that helps you to do a more complicated job more easily.
If that sort of thing doesn’t seem up your alley you can bail now. It’s okay, I get it. I’m going to break down how I set up one of my tools in Blender.
Let’s start with the camera. I set up a single orthographic camera right above my work area and set the orthographic scale to 2. I set it to 2 because I will be using a 2x2 plane as the extents of my texture. You can set it to whatever size you like, but I find this works for me.
I also set its render size to 4096 x 4096. You could set it to 2k or 8k or whatever size you want, but I wanted nice high resolution square textures at the end of this process. Your textures don’t need to be square, but that’s for you to decide.
You will also notice that I set the output to the openEXR file format. This isn’t strictly necessary but openEXR can contain a 32bit color depth and a linear color profile. sRGB non-linear color spaces, like 59.94hz NTSC signals, is one of those things that should probably be un-invented. Since we can’t do that, keeping your textures in a linear format, while not entirely required, is good texture hygiene.
Under Render Properties I set the display device in the color management dropdown to None. This prevents visual color crunching from alternate color profiles.
This is what the camera setup looks like with a 2x2 plane under it. Not really very interesting but it works.
Now that the camera is taken care of I need to model something under there. I quickly made up this screw head, since it’s the sort of thing that you wouldn’t want to model a thousand of and is a great candidate for casting off to the 2D world of texture images.
And this is what the camera sees.
That’s great and all but not really useful. To make it useful I needed to set up some materials.
This is what the same screw head looks like when I apply a normal shader to it. The normal shader encodes, in rgb pixels, the way that light would bounce off of a surface if it were 3 dimensional rather than 2 dimensional. The colors represent the deviation from the surface normal (perpendicular to the face). So it looks bumpy without actually being bumpy.
And this is what it looks like when I apply a depth shader to it. This one colors the surface in a smooth gradient from black to white based on the distance between two objects. I made these objects two non-rendering empties because that was a useful way to represent them. You could use anything. The distance between world 0 and the camera. The bounding box z dimensions of the model, or just some arbitrary numbers.
And this is the shader node graph for both the depth and normal shaders. I combined them for convenience and set up a switch to go between them, but you wouldn’t need to do that.
Since the entire depth graph is visible I will go over that first.
I’m passing all of these into an emission shader because emission is a pure representation of the output color we are looking for. No lights or shadows mucking things up. I get the position of the geometry that has the material applied to it with the geometry node and pass that to a Separate XYZ node. We are only interested in the Z position so I take that and pass it to a Map Range node. I want to take the distance between my two measurement objects, my ZMin and ZMax, and remap that distance to a 0-1 scale. This will give us a pure black to pure white gradient. I pipe that result into the emission shader and then pipe that to the material output. In this case I go though my mix shader for switching from depth to normal, but I wouldn’t need to.
You might notice that the ZMin and ZMax are purple. That is because those Value nodes contain a float driven by the Z position of my two measurement objects.
You can drive damn near any value with any other in blender just by right clicking on the input field and clicking on add driver. It’s something I don’t do nearly enough of but it’s very handy.
Now for the normal map. As you can see up there I use another geometry node (I could have used the same one, but whatever) and pass that into a node group that converts the normal vector into color data.
This is what’s in that node group.
I could absolutely clean this up and simplify it, but this is working. I’m taking the normal vector and converting each channel into the appropriate color. It set up like this because I was messing with each of the channels for a bit to get them tuned. I might clean it up, but it’s working now so I probably won’t bother. The Combine XYZ node is doubling for a Combine RGB node, but numbers are numbers and Blender doesn’t seem to care what node they come out of.
I take the new colors, put them into an emission shader and we’re almost done.
Now for the real reason I put together this setup. Baking.
The common workflow for this sort of setup is to make an empty image texture and ‘bake’ the detail from your screwheads or whatever into that image texture. Then you save that out to a file and you’re done. Great, right?.
No, it blows. Baking is slow, uses a different render path than I’m using to display the results, and sometimes contains artifacts and issues that you can’t see before the bake is done. I had depth and normal maps where two adjacent pixels that should have had a lot of contrast between each other turn into a mushy mess when baking.
To get the result out of the new method I use EEVEE (Blenders real time rendering engine) in the camera viewport and I press this.
Using this new method those pixels come out perfect. What you see is what you get. Not only that, but when reapplying the depth information, I now get perfectly sharp edges and details. What is the cost of this increased precision? Well I went from bake times I could measure in minutes to render times I can measure in seconds. More precise, faster, and easier to iterate. It’s vastly better.
Then it’s a click of Image - Save As to save the OpenEXR file and I’m done. I think that, in the future, I could set up a python script to run through the whole process for any maps I have to export and it could be a one click type of process. For now though, this works, and more important, it works so much better than baking.
Of course this works for flat surface details. Stealing the detail off the Venus De Milo might take a bit more work, but I have some ideas about that I might sort out one day.
Last Monday I posted a link. Just a link. The link led to the game that I finished during the Global Game Jam. Like everyone participating in the jam, I saw the theme on Friday, worked on the game Friday night and Saturday, and finished it up on Sunday.
That’s it. That is all the time you have to go from a topic to a concept to a finished game. Hopefully that’s enough time because you won’t be getting any more.
Even if you manage to finish up a game in that amount of time, the game you make will likely be bad, but fair’s fair, all games are bad in the first few days.
I had one main goal going into this jam. I was going to make a 2D game. Every other jam game I have worked on, except the text based ones, have included some 3D modelling at some point. So that was my hard limit. No 3D. I also wanted to do something with really tight pixel and palette restrictions. I went with only 6 colours and a resolution of 160 x 144. That was the resolution of the original Gameboy. I figured if that was enough for Tetris it would be enough for me. I thought about using an entirely 2D engine or framework, but I opted to use Unity since I am the most familiar with it and time is limited during a game jam. I also decided to do this one solo. Meaning that everything that isn’t included in the engine, I made. Graphics, I make em. Sounds, I make em. Game code, I write it. Physics… well physics comes with the engine but I did connect up all the systems to make a string that wouldn’t just suddenly break for no apparent reason. Getting that to work was much more difficult than I had anticipated.
Since I posted the game right after the jam, I have gone back to it and fixed up a couple of things to make it slightly less aggravating. It’s not what I, or any person who enjoys things, would call good. It’s bad, but at least it’s bad in the way that I intended. Also the sound doesn’t work in the web build. I’m not sure exactly why, but it might be something to do with not having a Start or Intro screen. I usually try to avoid having an intro screen for jam games just as a sort of aesthetic choice. I want people to be in and playing the game instantly. No preamble. No lore dump. Just load it up and start playing. Seems like, in this case, I might need to create a start screen to get sounds to play during the rest of the game.
I have participated in quite a few game jams. They are great for knocking the creative cobwebs off and getting you working and thinking about developing something functional. You don’t have time to get bogged down in trying to create an elegant solution to every problem. You just have to make it work. And when the weekend is over, so is the project. That’s it. You never have to think about it again. Game jams are excellent prototype, evaluate, and move on, training. I don’t tend to go back to jam games trying to make them better or continue developing them. If they are broken, I leave them that way. For this one, I will probably make a slight exception. I would like the sound to work on the web build, but I don’t want to put much time into fixing it. If I can get the sound working by adding a start screen, I suppose that is not a massive task. If that doesn’t work I fear the game will be doomed to silence forever. And that will be okay. After all, it’s a game I made over a literal weekend.
I did learn the ins and outs of Unity’s new input system, and that’s pretty good. I did learn about the 2D side of the Unity physics system, and that’s pretty good too. If I can get the sound working I will call the jam an unqualified success. Even if the game is sort of aggravating and not all that great. I’ll see what I can do.
Some slow progress continues over here. I mostly wrote stuff that is out of sequence, so I haven't included that, but I actually went back and did some writing in sequence as well. All told I think I only added about 1000 words to what I had before, but eventually I will be able to join it up to the stuff that comes further down the road. Eventually.
Best Games - Police 911 - The Keisatsukan
This one is a bit of a bummer. Not because the game is bad. The title right there says Best Games, and this game is fantastic. No, it’s a bummer because Police 911 is almost impossible to play now.
I think every game that I have written about in Best Games is pretty easy to get a hold of and play. A lot of them are available to play through your web browser with no special setup at all. While that might not be the best way to play them, they are available.
Police 911 is an arcade game that came out in 2000. It’s a lightgun shooting game that makes heavy use of motion tracking years before the Nintendo Wii would popularize motion controls.
First, here’s specifically why it’s a bummer. The only ways to play Police 911 are on an original arcade machine, or on a Playstation 2 port that was never released in North America. To play the PS2 port you will need to have a special Konami made usb camera and a Konami made light gun. You will also need a CRT screen. Also the PS2 will have to be able to play Japanese games. It’s worth noting here that none of this equipment is currently being manufactured so you would have to scour the used market to acquire any of it. It’s sort of a lot of kit to assemble just to play this one game, good as it is.
That aside, here is why it was so good. Police 911 is sort of slow. Well, it’s slow when it needs to be. You might say ‘hey that sounds like a bad thing for an action game to be’ but being slow is what makes this game great. This is the arcade machine. It has a place for you to stand so that you are the perfect distance from the screen, properly centered, and directly beneath some sensors. Those sensors keep track of where your head is at all times. This means that while you are playing the game you can lean, duck, and sway all over the place and the game will know where you are. This also means that the in game camera will move around changing the view on the screen to match your current position. There are no 3D glasses and no headset to wear, but the feeling of immersion and depth comes very close to a VR experience. An arcade game in 2000, displayed on a standard definition CRT and using some fairly common infrared sensors could offer up a VR like experience. It does that because the gameplay is sort of slow. Only a small handful of enemies will pop out at each checkpoint in a level and they will tend to wait until you are exposed before unloading on you. Most of them will go down from one of your shots. It is better in Police 911 to duck behind cover, lean out only as far as you need to, take careful aim, and fire only as often as you need to. Standing still and spraying bullets will get you killed very quickly.
The pace of the game forces you to use the movement mechanic and experience the immersion of having the view on screen track your head. That, in turn, makes you want to keep using the movement mechanic because just leaning around feels novel and fun. It’s a nifty feedback loop of joy. Konami could probably have made an entire game focused only on looking around corners using this same sensor hardware and it still would have been a hit because moving around in Police 911 is so much fun.
I like a lot of light gun games. I used to play Area 51 and Virtua Cop as both players with one gun in each hand. Getting an accuracy rating in the high 80s or low 90s on my left hand, my non dominant hand, was usually my goal. That is to say, I am pretty particular about how accurate light gun games are and how quickly you can move from target to target without the light gun letting you down. Police 911 (along with a lot of Konami light gun games come to think of it) is among the best. You can lean out, snap off 3 shots and drop 3 low poly bad guys in one movement. It plays great. If you can manage to play it.
So, that’s the conundrum. I thought about adding this game to the Best Games list a while ago, but I didn’t want to add something that is pretty much impossible to play. I thought, what the hell. If you do somehow manage to spot this cabinet in the wild, you should absolutely play it, because it’s one of the best games.
We are in the time of lists. At the transition point from year to year it’s customary to create lists. The best of, the worst of. The things that are memorable from the year gone by. A ranked index of towering works.
I don’t plan on doing that.
While we are closing out a year, we are also closing out a decade, and as far as video games are concerned maybe the best decade on record. Instead of making a “best of” list, I have written a completely unordered grab bag of games that I have enjoyed over the last 10 years. There were a lot of other games that I played and thought were great. This is far from comprehensive, but if you were looking for a good game to play, I don’t think you can go wrong with any of the bunch below. I’ll probably cover some of these games in longer Best Games pieces in the future, but I will keep the raving to a minimum here. I’ll limit the commentary to why these games were important to me.
The Legend of Zelda : A Link Between Worlds
I played most of this game laying in bed waiting for one kid or another to wake up. It was a salve for the tension of not really sleeping a full night for a few years straight. Aside from that personal bit of nostalgia it was just a solid game. It’s like they were in the middle of a remake of Link to the Past and decided instead to go in a whole new direction. It feels classic and timeless in all the ways that you would want.
I played through the entirety of the co-op mode of Portal 2 with my oldest son. He would have been around 4. Sometimes it took a few tries to get through a particularly tricky puzzle that required accurate timing, but we did it. Now he plays Doom Eternal on Nightmare, so that early practice must have stuck.
We still sometimes talk about the lemons.
Metal Gear Solid V : The Phantom Pain
I Don’t think I have played a single game for as many hours as I did with Metal Gear Solid V. I played every mission. Every mission. Side stuff. Stuff you didn’t need to do. Stuff that didn’t matter. I ran every one of those missions multiple times. I think it was the freedom. You could literally approach most of the missions in that game from any direction with any equipment. You could sneak, you could shoot, you could use the games systems against it. I didn’t think we would ever see such an intricate framework of systems so expertly implemented. I hope there are more games like it.
Bloodstained : Ritual of the Night
There have been a lot of games that purported to be the spiritual successor to Castlevania Symphony of the night, but I think only Bloodstained : Ritual of the Night can truly claim that crown. It takes everything in Symphony and extends it, expands it, reworks it into a fully modern game that plays like you remember Symphony playing like without just aping a game that came out on the first playstation.
Mass Effect 2 and 3
The first Mass Effect game came out in 2007 and I won the 360 version of it in a giveaway at a microsoft game developers meetup sometime early in 2008. I don’t think that I actually had a 360 to play it on until sometime in 2009. It is possible that I played that entire series this past decade, but I don’t really remember. Still, if I could only include the second and third entry of the Mass Effect series, that would be good enough. Mass Effect kept me up late when I really needed the sleep. There are characters and moments in that series that I will hold with me for as long as I possibly can.
Into the Breach
The simplicity and tightness of the game loop for Into the Breach is absolutely stunning. I think the only game that I have come across that is equal to it is Might and Magic: Clash of Heroes, but that was too old to make the list.
The first person shooter is such well worn territory at this point that there aren’t many that can surprise me. Titanfall 2 is endlessly inventive and no mechanic ever overstays its welcome. It’s the sort of game that I can see myself replaying every now and then and wondering why no one makes ‘em like that anymore.
I started Dark Souls a few times before I figured out what it was. I had to go back and play Demon’s Souls first before I got it. Dark Souls is a video game ass video game. It is what the makers of old NES side scrolling platformers would have made if they were suddenly gifted modern computer hardware and software tools. It is a modern game with a very old design attitude. I should probably go finish Dark Souls 3. I have a character stuck somewhere in the first third of that game.
Super Mario Odyssey
Most games frontload all of the good stuff. In the first few hours you will have seen everything the developers had in them. You will then spend the remaining hours of the game doing those same tasks over and over. For some games that’s enough. Others will start to drag. Super Mario Odyssey just keeps getting better and more fun the deeper you go. Every level is new and different. Very few games are so full of joy.
Super Mario 3D World
I came to this game late. It had been out for a few years before we got it, and I didn’t play it for probably another year more. When I did play it I didn’t want to put it down. Mario games have never been the sort that gives you that “one more level” feeling, but this one absolutely does. I really hope they make another.
Any time we show someone VR, Beat Saber is one of the first games that we load up. It is a game that could not exist without VR. It just wouldn’t work. It’s more fun than pretty much any other rhythm game I have played and it’s simple enough that everyone gets what to do by their second or third attempt. It’s one of the only ‘must play’ VR experiences.
Dishonored and Dishonored 2
They went and made a world so beautifully ugly that I want to walk around in it. I want to be there, in that space. I want to be in Dunwall smelling the rot and feeling the roof shingles. The magical ninja power fantasy is one of the best in any game, but I think it is the setting that really makes me love the Dishonored series.
The Outer Wilds
The Outer Wilds is like a magic trick. It gets you looking in one direction while it is gradually unravelling a beautiful, tragic, exultant tale right under your nose. When you suddenly see the clockwork perfection of it, it’s staggering. The fate of an entire universe all woven together through little snippets of investigation and evidence gathering. I don’t know that I have ever played a game so filled with pleasant melancholy. The Outer Wilds is one of the best games I have ever played. Ever.
I’ll end it there. I could go on, and there are a few games that I cut from the list. None of them were bad, and at least a few would be someone else's favorite of the decade. Like I said, this isn’t a ranked list, just some Best Games I look forward to writing about in the future.