Browsed by
Category: Technical

Creating The Oregon Trail

Creating The Oregon Trail

Image for post

In 1984 I was given the assignment to help create a completely new version of The Oregon Trail. The text-based version of the game had already been around for more than a decade — but in all that time the game had never been substantially modified, much less redesigned from the ground up. But that was about to change. MECC, the publisher of the game, was ready to replace the aging product with something completely new, and I was selected to be the team leader and lead designer for the project.

Learn how R. Philip Bouchard lead the creation of The Oregon Trail we know today, but also the hunting minigame was made. Fascinating stuff.

https://medium.com/the-philipendium/designing-the-hunting-game-for-the-oregon-trail-257924bdc6ae

Godbolt Compiler Explorer

Godbolt Compiler Explorer

Ever want to see what assembly code your compiler is really generating?

There are a few reasons to want to know this. Firstly is correctness. Sometimes obscure bugs can crop up when you switch from one compiler to another, from one set of optimization settings to another, from debug to release, or even from one compiler version to another.

The second is optimization. What addressing mode(s) are being used, are there data hazards that are slowing things, are simd instructions being used? Game and high performance compute companies still spend time pulling every cycle they can out of a routine.

It used to be you had to compile and then pull the executable into a debugger and examine the code. Now, there’s an online tool that can quickly do the same. Enter the Godbolt compiler explorer.

It allows you to type in C/C++ code, select from a whole host of compilers, enter custom compiler flags, then show you the generated output.

In the case above, I wanted to verify C/C++ short-circuit comparison behavior of a variable against NULL and then dereference in the same conditional. If the compare against NULL doesn’t execute and exit before the dereference, a NULL pointer exception/segfault will result. According to C/C++ rules, there should be an early out after the comparison against NULL – and sure enough – on line 8 and 9 we see the test and exit.

Anyway – it’s a neat online tool you might give a try to learn more about the assembly your C/C++ code turns into.

AI Enhanced Moon Landing

AI Enhanced Moon Landing

Historic footage from the Apollo Moon landings is not so great. The footage is often grainy, blurry, and in some cases (to conserve film) only 24, 12, 6, or even 1 frame per second.

A photo and film restoration specialist, who goes by the name of DutchSteamMachine, has worked some AI magic to enhance original Apollo film, creating strikingly clear and vivid video clips and images. Read more about the technique here.

Apollo 15’s landing site at Hadley Rille in 60 fps (originally 12 fps)

Apollo 11 First Steps on the moon in 24fps, originally filmed in 12fps.

Mandalorian filming

Mandalorian filming

How the Unreal game engine and a nearly 360 degree video wall has transformed how special effects are done. It’s a complete game changer because it solves almost all the problems relating to green screens and digital effects.

Fractal moving art

Fractal moving art

Pouff creates moving images using fractal math, and makes their own music to go with. Their YouTube channel is loaded with colorful and hypnotic visuals, like this clip of intricate, organic looking structures, accented by brilliant backlighting.

Plundervolt

Plundervolt

Computer security is hard – even when there is hardware dedicated for the purpose.

Overclocking has been an interesting field for computer design and providing really interesting knobs to tune performance. This is done by pushing a CPU, memory, and other components past their normal voltage and frequency limits by adding cooling solutions or exploiting engineering headroom limits.

Undervolting is the opposite. It lowers power and/or frequency. This can be used constructively to save power on your laptop if it isn’t doing anything. But if you starve it enough, you end up with memory corruption and crashes. When done in certain ways, you can cause faults and corruption without crashing the CPU – leaking secrets.

Plundervolt is one such exploit. Give it a watch.

PS5 architecture

PS5 architecture

Some interesting tidbits here – but those of us familiar with the technology actually see that they’re borrowing a good bit of their core tech from current PC technology. It’s worth watching this video, then watching the one at the bottom of this posting to cut through the marketing spin and understanding.

  • Storage (5:05)
    • 825GB of SSD storage that runs at 5.5GB/s on a 12 channel PCIe 4.0 interface.
    • Dedicated Rad Game Tools Kraken decompressor hardware for optimized loading.
    • Dedicated DMA controller and memory mapper to offload the copying of resources directly to memory
    • Coherency hardware to prevent GPU data flushes.
    • All this happens invisibly to the developer. You simply point to where you want a resource to be loaded and the loading engine hardware does all the work for you.
    • Allowing external hard drives and 3rd party SSD’s
  • GPU (23:50)
    • AMD RDNA 2 based GPU running up to 2.23GHz. 36 compute units. 10.28 Teraflops. 16GB of DDR6 memory running at a bandwidth of 448GB/s.
    • Xbox Series X = AMD RDNA 2 – 52 CU’s at 1.825GHz
    • Likely 36 RDNA 2 EU’s (CU’s)
    • Geometry engine – sounds almost identical to mesh/geometry shader pipelines that have existed for some time.
    • Ray Tracing – basically the same as what will be available on PC
    • They prioritize higher frequency than more CU’s since higher frequency . Therefore, their GPU will run continuously in boost mode setting a specific power level and let frequency go up and down.
    • Instead of basing performance on CPU temp or ambient temp – which leads to uneven performance in varying temperature environments – they use CPU and GPU power to shift compute back and forth between CPU and GPU. See AMD SmartShift. Overall power stays constant but can shift back and forth between CPU/GPU via variable frequencies.
    • The most fascinating part is that workloads go through a ‘model SOC’ that defines and sets the realtime power and performance characteristics – producing the exact same clock timings on every PS5. This performance is VERY reproducible and hence games should perform the same on any PS5 whether its running in a fridge or in the desert. This system relies upon the special cooling solution for the platform.
  • CPU
    • AMD Zen 2 CPU capped at 3.5 Ghz – 8 physical cores/16 threads
    • XBox Series X = Zen 2 CPU at 3.8GHz – 8 physical cores with SMT
  • Audio
    • Want to use the 3D audio lessons they learned with Playstation VR for ALL devices – from mono, stereo, headsets, sound bars, to full 5.x and 7.x surround systems.
    • Unique HRTF to process and give 3D locality information to the audio playback = Tempest 3D Audiotech engine. Engine can even handle moving sources.
    • Will provide 5 different HRTF’s but are considering the possibility of taking pictures/video of your ears to model your HRTF.
  • Backwards Compatibility (23:70)
    • Expecting most of the top 100 PS3 titles to work on PS4

Here’s another excellent video that does a better job cutting through the hype and pointing to the underlying technology they’re likely utilizing.