Interesting People #20: Louis Castle on developing DragonStrike and other D&D classics

in #gaming7 years ago (edited)

This allowed the artist (me) to paint the map to make land masses. As a side note, we did the artwork between missions in a clever way too. The images like the dragon rider [at the start of this interview] were done in 16 color EGA first then painted over to expand each of the 16 colors in a range of 16 values for CGA. Essentially if you take the top 4 bits of the byte it was the 16 color EGA. This target system was a 6 Hhz PC/AT 80286 with CGA graphics (320x200, 256 color mode 13h.) which still required a small window for a decent frame rate. The player could select detail levels to be wire frame, looking a bit like battle zone, all the way up to many fractal levels of detail. You could also choose to represent dragons as polygons or bitmaps. 

Dungeons & Dragons games have a natural home on computers. Not only can they perform all the dice-rolly number-crunching and keep track of character sheets and the like much faster than in traditional pen & paper gaming, there’s also always been a strong crossover in the D&D and computer aficionado demographic. I spoke to Louis Castle, co-founder of Westwood Studios and 30-year games industry veteran (which I interviewed him about right here on Steemit) about his early experiences developing D&D videogames. Read on as he shares his memories, including both design and technical details on his own favourite D&D title:  DragonStrike.

What was the first D&D computer/video game you remember playing? Can you describe the experience?
Louis: The first officially licensed D&D game I played was the Advanced Dungeons and Dragons Pool of Radiance Gold Box game. However, my involvement goes back a bit further than that. In 1987 when SSI was pitching to get the D&D license they were up against EA and other powerhouse publishers that were sure to have fancy demos.   Westwood was contracted to create a 3D point of view dungeon. I created a 3D dungeon crawler tool set that used Karnaugh maps to deal with occlusion and prevent over draw for the 3D POV character based system used on the Commodore 64.

SSI was able to demo a fully working 3D dungeon, with tools, which we were told helped them to win the contract for D&D. The same logical system was used for years on most of the Gold Box games and even a few other titles.   

What is your favourite D&D computer/video game of all time, and why?
Louis: If I can pick my own favorite D&D game, it would have to be DragonStrike. I really wanted to work on a flight simulator so Weswtood pitched the idea to SSI to make a Dragon flight sim. It was great fun to create the all assembly true 3D fractal tech. I also did the design, story and some of the art.

One of the most exciting parts of working on DragonStrike was that Westwood's story became part of the Dragonlance Canon. Many of us were huge fans of the Margaret Weis and Tracy Hickman books so it was a great honor to thread our game into their world.

I don’t see you or Brett Sperry credited on many of the Dungeons and Dragons games made by Westwood. Which D&D titles were you hands-on with for the development (be it programming, writing, design, whatever)?
Louis: That's a big list.   Brett and I did not officially credit ourselves on all participation of every game done by Westwood but each of us had a hand in just about all of them.


Thanks for all the great games, Westwood.

I did the core 3D engine tech used by most of the Gold Box games. I worked on a few design items for Hillsfar like the lock picking. I was the lead designer on Hollowworld [Warriors of the Eternal Sun] and did most of the story direction, some programming and art direction. On DragonStrike I wrote the core tech, did the main design and some of the art. On Eye Of The Beholder I was in a technical support role and worked on game balance and art direction.


DragonStrike was released to great acclaim from both press and critics, selling amost 35,000 copies.   

So you mentioned DragonStrike as your favourite – let’s talk about that! Where did the idea for the game come from? Were you guys (and SSI) just doing whatever could be imagined that fitted into the D&D license?
Louis: DragonStrike started on the PC as a full 3D flight sim and was ported to the Amiga. Pony Canyon licensed the catalog of D&D games from SSI and hired Westwood to make an NES version. The NES game was a top down scroller that was an arcade game


DragonStrike on the NES was a
very different experience.

I pitched the original PC game to SSI and TSR because I wanted to write a 3D flight simulator based on fractal world generation. The pitch was to give players the feeling of soaring over Krynn on the back of a dragon. There were many of us at Westwood, including myself, that loved the Dragonlance world so it seemed like a great idea. State of the art of in flight simulators at the time was a flat ground plane with lines on the ground to represent airports or roads. I wanted full 3D worlds to make the game far more entertaining.

I started with a “full screen” height map of the world. Space was very limited on these older systems both in memory and on media. The height map was used both in the game as a graphic and as the actual data for the world map with each color representing a height.


Krynn during the War of the Lance – this image was used both as a world map and as height data.

Can you remember some of the challenges with creating a dragon flight sim and not just a normal aircraft flight sim?
Louis: To make the world sufficiently large there was not enough memory to store a mesh for anything of a reasonable detail level so I generated a fractal world one quad at a time, from the back to the front of the view frustum, in real time. This allowed for me to offer many levels of detail, nearly endless, based on the power of the PC the game was running on, by rendering many hundreds or even thousands of polygons without using much memory. You can see the quads as a wireframe over the solid shaded polygons in image. The entire math libraries were done in fixed point math since floating point was not available on enough PC models in 1889. 

Unfortunately the low end system we were required to support was a 4.77 Mhz 8088 PCXT which could barely clear the screen more that 4 time a second. I decided to render the world into a window to get the frame rate up rather than overlay GUI on the screen.


DragonStrike’s box art – Commodore 64 cover shown here. Image from Wikipedia.

So, do you mean you found a way for one image to render in VGA, EGA and CGA according to the first x bits of each byte?
Louis: Yes. VGA 320x200, 256 color Display is a bit more detailed to explain. The image was stored in a compressed file using a modified LZW lossless compression combined with run length encoding and a very simple predictive algorithm. The same core code was used later for the data streams of VQ (Vector Quantized) codec used on C&C. The compressed file allowed for much faster loading and the assembly decoder would decide the full byte for VGA and strip the low 4 bits when decoding to EGA resulting fast loading and display from a single data file.

The compressed VGA files were always smaller than the EGA source would be (although in theory they might have been bugger, just never happened) and the decoder could use the same buffer for loading and decoding, essentially decoding the compressed data loaded into the end of the buffer back into the beginning of the buffer. For the compression geeks out there the code book was partially loaded in a scratch buffer to guarantee no data overrun and also to ensure proper word aligned data for faster data fetching of the most and last used codes. This same scheme was used for virtually all graphic assets.


“You can see the quads as a wireframe over the solid shaded polygons in image”

3D models were stored as vertex lists with the different key frames maintaining the same vertex order to allow for faster a faster Lerp when animating. The game loop ran in an interrupt while the graphics rendering was done "as fast as possible" which resulted in a highly variable frame rate depending on screen complexity. This allows for very fluid visuals on the target system when flying about the world and a much more choppy experience when in combat with lots of dragons. I think the biggest fight was a 9 on 9 battle with a flying citadel in the area and a fully rendered 3D fractal world below. Maelstrom was the name of the mission if I recall. That one pushed everything right to the edge! 


“DragonStrike started on the PC as a full 3D flight sim”

There were lots of tricks needed back then since the processors did not include floating point. For instance, functions like sin, cos & tan were derived for a single sin array for 90 degrees. For and cross products were stored in arrays with lookups to get the recalculated sums. Inaccuracy would compound badly so it was a constant struggle to balance accuracy against memory use.    The world coordinate system was in millimeters with a scale assigned to each object such that a single object would only have 8 bits of accuracy but would shift those bits into the world coordinates. That way you could have a dragon next to a massive citadel above an even more massive world all done in essentially 8-bit fixed math. We also did not have z-buffers so everything had to be culled and drawn in reverse order. 

Wow… intense stuff. And how was it developing DragonStrike for the NES? Were you able to use any code from Vindicators (I only ask as it's also top-down) or was this a from-scratch project? And how did you feel about the finished product and its reception?
Louis: I don't recall using any Vindicators code. The project was directed by our Publisher, Pony Canyon, who really wanted a very difficult arcade experience. I thought it was fun, if a bit too hard. I definitely preferred the PC version on a high-end machine.


Pony Canyon directed and published Westwood’s NES top-down shooter.

So where did the original game design idea for DragonStrike come from?
Louis: Originally the flying was based on a WW1 flight model I found in some 3D graphics books. It was more like soaring or floating but that did not feel very dragon-like. So, I added variable lift along a sign wave that simulated the flapping of the wings and synchronized it with the animation of the dragon bits you could see from the back of the dragon.

I kept some of the original vector-based flight model to allow for loss of altitude when banking, slipping, and acceleration when diving. I was happy with the final model as it felt to me like you were really on the back of a beast. The model varied by dragon type allowing for different top speeds, acceleration and climbing or lift.   The story was weaved into the Dragonlance world by detailing battles mentioned in the War of the Lance. It was really great to embellish the world we were all reading about in the novels. The detailed characters and events we embellished became part of the Dragonlance canon.


Tanis, Goldmoon and Sturm, from the cover of the original Dragons of Autumn Twilight – where the DragonLance saga began. Image sourced from Infinispace.

In terms of having your story was woven into the Dragonlance canon - what was the approval process with TSR like? Did you get to meet with Weis and Hickman and discuss the characters and story?
Louis: I would have loved to meet Weis and Hickman but never did. I also loved the books and the entire world of Krynn. It was a great pleasure to detail the key battles in the War of The Lance. Some battles had been mentioned in the books but most were designed to support our game narrative of escalating use of dragons in warfare.

TSR had very high standards and made sure the mission briefings met the style and tone of the books. We also managed to get a few characters and stories into the Forgotten Realms canon when we made Eye of the Beholder I & II but nothing quite like the scope of DragonStrike.   Ultimately it was just a thrill to contribute to the D&D universes. I was an active DM for sixteen years so working on D&D games was a personal highlight. 

Taking a step back, and from a higher level, what was it like developing D&D/Dragonlance games for computers back then? SSI won the license and succeeded because of your tech, and some of the most legendary computer RPGs of the late 80s and early 90s exist because of you and your dev team at Westwood.
Louis: We really enjoyed working in the D&D worlds. SSI developed the gold box series so we didn't have much to do with them. We did the Hillsfar collection of games, DragonStrike and of course Eye of the Beholder I & II, the real time RPGs. EOB was a really great experience since we were free to develop those original RPGs in the D&D world. 

Trying to stay true to the D&D ruleset in a real-time game was very difficult but I feel it really paid off. Those games put Westwood in a different class of developer and really set the stage for our growth as a Studio. I loved the story telling that Rick Parks was able to do in those intros. It was just fantastic for the time.


The intro-sequence from Eye of the Beholder – a dungeon-crawling classic and one of Westwood’s D&D masterpieces.   

What's the chances of seeing an updated, modern DragonStrike for today's systems? You know... a huge War of the Lance brought to life by modern graphics hardware and a back-end powered by AWS for huge MMO-style battles!
Louis: That would be awesome! There have been some great Dragon flying games but nothing like what was imagined in the War of the Lance. I don't think it's in the cards for me to build one but it sure would be great to play one. 

Thanks a lot Louis. I absolutely had a blast playing DragonStrike back when it came out - I'd read so many Dragonlance novels and short stories by this time and it was unreal for 12-year-old me to be flying dragonback in that world!
Louis: I'm so glad you liked it! Thanks for the opportunity to share some memories. :)

A huge thanks once more to Louis for answering my many questions. Looking forward to more in the future! 

Previous:
Interesting People #19: Alex Sterk on GeoCoin, the Ubiq team, security, governance, and more

Next:
Interesting People #21: Dragos Roua on his journey to becoming a Steemit witness

Sort:  

This post is upvoted by Polsza for 56 %.
If you want help us growing upvote this comment.
Thanks !

Wow I haven't played D&D in ages. This sure brings back memories :)

Yep, other than some of the newer computer games (and Beamdog's Enhanced Editions) I've not played in many, many years. Great to be able to relive some of the memories through these nostalgia pieces :)

I currently play a lot of newer console titles. However, I feel like you do about the classics :) Keep up the great posts!

Your Posts Are Always Fantastic. More People Should Follow And Upvote You. post has received a 30.00 % upvote from @binkley thanks to: @steemthat, @steemthat, @steemthat for verifying this quality post. Be Sure To Upvote This Comment To Help Me Grow. When I Grow You Grow Too And I Can Verify More Posts. binkleybot.png

Wow, thank you :)

Appreciate it!

You're welcome! Tell me a little more about yourself.

Well, a lot of it is in the intro post I did, really... Spent quite a few years as a journalist, worked marketing in video games for a while, very interested in blockchain technologies, and I think this is a fantastic platform, so giving it a try.

Really like that it is distributed and so anything written to the blockchain can essentially be accessed forever - or as long as it's around, anyway, and that the rewards go to the content creators, curators and network maintainers.

Only been a few months, but so far so good.

Nice one!

I'm finding myself scanning through to find all the juicy bits and savour them.. but seriously..a Dungeons and Dragons post! Legend! I'm coming back to this later :) Upvote!

I'm actually writing a saga here on Steemit called "Adventures in Elowyn Glade" loosely based on fantasy themes and dungeons and dragons. I'm having so much fun with it! I won't spoil where it's going, but I'm developing some strong characters that are in danger immediately!

Take care! And keep up the great work.

Nick

Awesome, thanks very much! Looking forward to checking it out when it is done. :)

Cheers for the upvote and the comment. Had a lot of fun putting this piece together. Louis is such a great guy when it comes to not just answering the questions, but going into great depth to really explain everything they were doing. Awesome guy to interview!

No worries.

The first four issues of the saga are already up if you were interested in reading. Issue one is here:
https://steemit.com/story/@nickmorphew/bash-in-skulls-with-the-maul-of-malevolence-and-incinerate-eye-balls-with-the-staff-of-sacrifice-step-into-a-world-of-fantasy-in

The rest can be found along my blog! Most are updated within a day or two. I'm trying to keep the ball rolling!

I'm stoked you're having so much fun interviewing and getting this all out to us! You're work's really appreciated.

Take care,
Nick

Took me 2 readings to get trough this one, but awesome work as always. I love how we can get these like exclusive interviews here on steemit, especially when they are in the gaming industry that I love! As i resteemed the first part it only feels right resteeming this one, peace bro!

Awesome - thanks a lot man :)

This post received a 3% upvote from @randowhale thanks to @badastroza! For more information, click here!

@OriginalWorks Mention Bot activated by @badastroza. The @OriginalWorks bot has determined this post by @badastroza to be original material and upvoted it!

OW2.gif

To call @OriginalWorks, simply reply to any post with @originalworks or !originalworks in your message!

For more information, Click Here!

Awesome - thank you :)

Loading...

Congratulations! This post has been upvoted from the communal account, @minnowsupport, by badastroza from the Minnow Support Project. It's a witness project run by aggroed, ausbitbank, teamsteem, theprophet0, someguy123, neoxian, followbtcnews/crimsonclad, and netuoso. The goal is to help Steemit grow by supporting Minnows and creating a social network. Please find us in the Peace, Abundance, and Liberty Network (PALnet) Discord Channel. It's a completely public and open space to all members of the Steemit community who voluntarily choose to be there.

@badastroza got you a $1.69 @minnowbooster upgoat, nice!
@badastroza got you a $1.69 @minnowbooster upgoat, nice! (Image: pixabay.com)


Want a boost? Click here to read more!

This post has received a 21.43 % upvote from @lovejuice thanks to: @badastroza. They have officially sprayed their dank amps all over your post rewards. GOOD TIMES! Vote for Aggroed!

You Are An Excellent Steemian. This post has received a 50.00 % upvote from @steemthat Return the favor and SteemThat Person Back: @badastroza. SteemThatBotMoreIGrow .


Using @steemthat Is Easy. Transfer 0.010 to @steemthat and The Steemit Link You Want Upvoted In The Memo. Please Upvote This Comment To Help Me Grow!

This post has received a 10.36 % upvote from @booster thanks to: @badastroza.

This post has received a Bellyrub and 33.91 % upvote from @bellyrub thanks to: @badastroza. Send SBD to @bellyrub with a post link in the memo field to bid on the next vote, every 2.4 hours. Be sure to vote for my Pops, @zeartul, as Steem Witness Hope you enjoyed your bellyrub!

Hi @zeartul can you confirm that if we send you 10SBD we will get an upvote at 100% voting power?

This post received a 2% upvote from @randowhale thanks to @badastroza! For more information, click here!

This post has received a 31.25 % upvote from @nettybot thanks to: @badastroza.

Send 0.100 SBD to @nettybot with a post link in the memo field to bid on the next vote.

Oh, and be sure to vote for my owner, @netuoso, as Steem Witness

Have a great day!

Excellent post, you have my vote, when you can go through my post to know your opinion, greetings

This post has received a 21.74 % upvote from @buildawhale thanks to: @badastroza. Send 0.100 or more SBD to @buildawhale with a post link in the memo field to bid on the next vote.

To support our curation initiative, please vote on my owner, @themarkymark, as a Steem Witness

This post has received a 7.69 % upvote from @steemorocco thanks to: @badastroza.