Thursday, December 14, 2017

Just quickly announcing my plan of accomplishing two goals before 2019.

Goal 1: Develop fully 3D 'Return To Rom' game based on Rick Adam's 1983 'Temple of Rom' game for the TRS-80 Color Computer.  The game will be built in Unity 3D and will be available as high-end version for pc, and lower spec version for WebGL and Android.

The 3D game labyrinth MUST adhere to the exact theoretical dimensions of the original Temple of Rom, using wall heights as described in the May 28, 2016 post entitled "Determining Scale and Room Size".

Although I have a long ways to go (learning to program shaders right now and designing floor / wall artwork), a lot of progress has been made in creating dynamic walls and corner supports that 'grow' into position and can be modified as the game progresses (changing from blue to red, grow/shrink, etc).  These improvements really help speed up level/room building.

Here are two pics of my current 3D development work-flow...

The picture above shows the level in 3DS Max.  I'll share more about my process of building the map later, but the golden dots in the map on the left are all the corner points accurate to a tenth of an inch of the original game corners.  Using these coordinates, I can dynamically 'grow' walls to the right height, width, length.

The picture above shows the 3DS Max scene after importing it into Unity.  This is taken from the perspective of a 6-foot tall person looking towards the 35-foot tall walls.  You'll notice the overhead map in the lower right corner which mimics the view from the original Temple of Rom.  That overhead map is simply a camera looking down at the scene, so you can see... from a bird's eye view... the 3D walls actually light up just like the original game.  For now I have a white square dot representing our hero, however in the final game... the overhead map will show the original Temple of Rom character sprite animating as you walk around.

Goal 2:
My second goal for this upcoming year is a programming challenge to re-create the original Temple of Rom via 6809 assembly code for my Vectrex.  I don't plan to decompile the original Temple of Rom 6809 code for the color computer, because I want to challenge myself to solve the problem of smooth 8-way scrolling and other optimizations that will be required to make it work on a Vectrex. I tried coding my first game on the Vectrex during the month of January 2017 and ended up with something that looks like the picture below...

The Vectrex display works more like a vector oscilloscope than a normal crt display, so it has some challenges of it's own.  However, I was pretty happy with the results above which allowed me to jump the fox in a 'quasi-3d' space back into the distance and forward to the front as shown above.

Saturday, May 28, 2016

Determining Scale and Room Size

We cannot create 3D visuals of a 2D world without deciding ahead of time how to convert the 2D pixel units to actual feet.  In the case of Temple of Rom, this job is made easier by an exact pixel map recently made available by Starxxon@lv_tone after he pulled the coordinates from the original game. (Hopefully in the near future, I can get him to share a bit about how he pulled this data.)

Let's start by setting some ground rules:
Rule #1, no hallway should be higher than an adjacent room
Rule #2, room and hallway height should be determined based on their shortest side length.

To begin, my thought was to convert 1 pixel (px) to 1 foot (ft).  Then determine wall height based off of shortest side-width of each room/hall.

Initially, this seems to work well for the rooms.  There are 65 rooms with consisting of 12 unique minimum side widths ranging from 15 rooms with side width of 15px to 1 room with a minimum side width of 95px.  

So, our room wall heights would range from 15 ft. to 95ft. tall.  Reasonable, considering  the average Greek Temples were around 20 Meters (65 ft) in height.

Let's see if this conversion of 1px per foot height works for the hallways.   The 6 unique widths for the hallways are: 3, 7, 11, 15, 19 and 27.

Analyzing the map, we see that the majority of hallways are 7 pixels wide.
(7 pixel wide hallways shown in white)

While a 7 foot tall hallway is reasonable, the minimum hallway size is only 3 pixels wide. Considering how fast our character moves, 3 foot high passageways seem a bit cramped. But if we double that to 6 feet, suddenly everything else becomes doubled including the height of the 27 px. wide hallway and the height of the 95px. room.

Therefore, decided to test the following rule. Height of rooms should be determined on a 1 : 1 / pixel to foot ratio. Hallways will follow the same rule, except we'll add 3ft. (i.e. 3px = 6ft. high, and so on).


Okay, hopefully that last part didn't bog you down too much...let's test this rule set out and build a mock-up displacement map. To do that, we simply color each room/hallway with a grayscale color value that matches the pixel/foot height. In the picture below, you can see I used a 35,35,35 color that 3DS Max will turn into a 35 foot (unit) tall room.

And now it's time to import our finished grayscale displacement map (pictured above) into 3DS Max.

VOILA!!   Looks reasonable to me.  Displacement maps are a great way to quickly prototype our heights, but the dense mesh is terrible for actual efficiency and future styling.  In the next blog post I'll discuss options for walls/structure and how our design decisions impact gameplay possibilities. Stay tuned, subscribe or join in on the discussion!

Thursday, May 26, 2016

Personal Vision for 'Return to Rom'

My childhood habit of soaking in the details of game manuals and box-art before playing each new video game ensured the associated imaginary worlds were firmly established within my little mind well before our family color computer even turned on.  Instead of setting me up for disappointment when faced with the harsh reality of blocky pixels and limited color palette, these established imaginary worlds helped me see past the on-screen visuals to the secret fully-realized worlds hiding beyond.

Adults watching me play Temple of Rom surely wondered why the rudimentary blue maze captivated my attention, not knowing that in my mind I had embarked on a brave expedition to explore the perilous ancient ruins of an interplanetary civilization.  During two sick days this past week, I came to the realization that it is within my expertise to recreate these imaginary worlds within an interactive 3D environment, allowing others to get a glimpse of what I actually saw within my mind's eye nearly thirty years ago.

Unfortunately, at least for Temple of Rom,  it turns out my childhood vision was wrong.  I recently heard Steve Strow's great interview with the original game developer Rick Adams  (click to watch), in which Rick explained that Radio Shack (Tandy) asserted creative control over his original story, changing several key elements.   As a child, I built my mental world around the printed manual, expounding from that trajectory.  In my mind, the ancient Temple of Rom was actually a massive deactivated computer on an alien world.  If only I could explore every room and get every treasure, the maze computer would activate, reveal it's arcane secrets and I could escape.  The temple walls were as gold and shiny as the computer generated intros made popular on ABC and NBC in the 1980's.

That's the vision I'm going for with this project.  My personal vision.   An accurate representation of the actual gameplay, with the best of the 1980's 3D visuals that filled my head at that time.  Going forward, I hope to reach out to the awesome, supportive COCO community along with Rick Adams, the brilliant mind behind the original game, in order to assure that this remake is done right.  Thanks for reading!  More to come!

Original 'Temple Of Rom' Story:
You are an archaeologist for the Galactic Council of Free Worlds sent on a mission to discover the mysteries of the Temple of Rom, located on the desert planet Roloc.  You are searching for artifacts of a prehistoric society that vanished over two million years ago, leaving legends of great wealth and magical arts.  A legendary curse claiming to protect the sacred temples and the valuable historic artifacts that they contain has also survived.

Your mission, should you decide to accept, is to recover the treasures from the Temple of Rom. The charter for your mission states that your purpose is “to enrich the present by expanding our knowledge of the experiences and achievements of this past civilization.” A noble task indeed, but the risks are enormous.

Yours is the third mission of its kind. We lost contact with the last two missions after they landed on the surface of Roloc. Since that time, modern technology has advanced our study of the temple’s interior.  Electronic scans reveal a maze-like structure with signs of activity. A scroll is enclosed to assist you. Good luck!

'Return To Rom' Story:
(1st Draft)
After a third ‘failed’ mission, the Galactic Council of Free Worlds banned further explorations to planet Roloc. Regarding the findings and final outcome of the missing adventurers, the Galactic Council has been oddly silent.  It has been ten years since that last expedition.  Ten years since your uncle disappeared into the ancient technological temple beneath the sands of that cursed desert planet.

On your viewport, you see the dark silhouettes of blockade sensors surrounding the mysterious planet.  Anyone foolish enough to set those off would be vaporized before they reached the atmosphere.  Beaming to the surface would be even more foolish, as you might end up 1000 feet in the air or entombed under a mountainous sand-dune.  You are no fool.  You tap your pocket confidently, feeling the outline of a letter.  The letter which your uncle entrusted to you containing the exact teleport coordinates he had been given by the Council..  

Your partner speaks up with a shaky voice, “I’ve got a reading on those coordinates.  The temple seems to be a large maze-like structure, almost one square kilometer in size. The location in that letter puts you somewhere near the center of it.  Once there, the ship’s computer will track your progress and update your map accordingly.  Be careful, there seem to be some signs of ‘activity’.”

“...and one of those ‘signs’ is surely my uncle.”, you reply with a smile as you bravely step into the teleportation chamber.

ADDITIONAL INFORMATION (until I build an Overview page)
My Goal:

Re-envision the classic 1984 Temple of Rom game, originally developed by Rick Adams for the Tandy Color Computer.  The goal for me is to digitally capture and share the same first person view/experience of the game that I imagined when playing the game as an 8-10 years old child.

Success Metrics:

  • Must look identical to the original game from an overhead view while simultaneously providing 3D first-person perspective.
  • Must accurately recreate original game-play and enemy logic from both the overhead and first-person view.  *exception being that in first person view, the player is free to look around*.
  • Must maintain accuracy in the sound effects/music.  
  • Must develop realistic conversion of pixel values to real-world dimensions, taking some artistic liberty to determine best height values.
  • Must provide alternate Red/Blue color schemes per original hardware option
  • Must provide ability to switch main view between overhead (retro) to first person, while always keeping both views active.
  • Must provide two game modes.  Original (Points / lives only) and Story (Missions / Unlockables / Points / Lives / Area Activations / Backtracking, Save Points and Unfolding Drama)