Jim's Blog Ramblings about novels, comics, programming, and other geek topics


Quick Book Reviews

Google AdSense

I've been busy and haven't had a chance to post any in-depth book reviews, so I wanted to post a few quick ones while I still remember what I read so far this year.

Halo: Ghosts of Onyx By Eric Nylund
I remember reading this around the end of last year. I did enjoy the other Halo series, but I remember not really liking this book as much as the others in this series.

Mass Effect: Retribution by Drew Karpyshyn
I was lucky to pick this book up at Comic Con 2010 and get it autographed by Drew Karpyshyn. I'm a big fan of the Mass Effect novels, games, and comics. I did enjoy this book and I was happy to see Captain David Anderson back in a novel. This book felt quite a bit different from the other two Mass Effect novels, but it was still a good read. I enjoyed the introduction of the new assassin character and information about the Illusive Man and Omega. I felt that ME2 didn't have enough missions and detail to Omega and I hope they add more to the space station in the next game scheduled for 2012 release.

World War Z: An Oral History of the Zombie War by Max Brooks
I also bought this book at Comic Con 2010. I had never been a fan of zombie movies, novels, or games, but I decided to pick this book up. It took a while to draw me into the story. The first several stories didn't really lure me into the setting or back story and it felt like I was reading one of those NPR stories where they just interview some random guy on the street. However, around the 1/3 mark I started to really enjoy the format and stories. The novel format is also quite different than other novels. The book is a collection of first hand accounts of what happened during the zombie outbreak and war told by it's survivors to a researcher working for the UN. He travels the globe conducting interviews for a report after the war has ended. It's a very unique way of storytelling and for a first-time zombie reader (myself), I think it worked well and I believe there's a movie based on this book coming around 2014 with Brad Pitt.

Brave New World by Aldous Huxley
Several months ago, I figured that since I enjoy science fiction so much, I should really go back and read the sci-fiction classics. I picked up Brave New World from a local used book store for a few dollars and read it during a business trip. The book was written in 1932 and is considered one of sci-fic classics and must-reads for all sci-fi fans. The book also felt somewhat shorter than usual novels. For a book that's almost 80 years old, I think it still reads fine. I can see how it might have been considered controversial or surprising to readers in the 1930s. Overall, I think it's a good book. A movie is schedule for released sometime in 2011-2012 staring Leonardo DiCaprio and directed by Ridley Scott. There's been a few movies and TV shows already made based on this book and many dystopian settings draw influence from this book.


Halo: First Strike (Book Review)

Google AdSense

The third book in the Halo series is title "First Strike." Eric Nylund, author of the first Halo book "The Fall of Reach" returns to finish some of the unresolved plots from the first book. The book takes place between Halo 1 and Halo 2 video games.

The novel also provides the Halo gamer with insights into how Master Chief returned to earth after Halo: Combat Evolved (Halo 1) and how the Covenant discovered the location of earth.


Star Wars Padawan Training Available in July 2009

I just discovered this unique and interesting toy via Scott Adams (Dilbert Blog). Well, it's not so much a toy as it is just a cool device.

Wearing a custom built device that slips on your head, you can use your brain waves to move a sphere vertically in a container. There's no wires and no interaction via control pads or buttons. The wireless headset reads your brain activity, similar to an EEG medical test, to translate the brain waves to physical activity.


Halo: The Flood (Book Review)

The second book in the Halo series is titled "The Flood" The book is written by William C. Dietz who's background of serving in the US Navy as medic might have helped him with the characters and background stories.

This book is a novelization of the first Halo video game (Halo: Combat Evolved). I never got a chance to play the first Halo game, so the events of the game were unfamiliar to me. For most other Halo fans, they've probably played the game and remember quite a few events of this book.


Halo: The Fall of Reach (Book Review)

I wasn't too familiar with the Halo series until last year when I played Halo for the first time. I knew it was a FPS (first person shooter) and knew that it involved running around and shooting aliens, much like most other FPS games. Since FPS games weren't my speciality, I had never spent much time playing or reading about Halo.

After I purchased Halo III, I was able to complete the game and learn a little more about the Halo setting. The game was fun and a bit challenging at times. However, since I don't have a XBOX Gold membership I wasn't able to play online versus other players - who probably would have easily killed me anyway.

A few months after playing the game, I noticed the Halo book series at a local bookstore. I thought it might be interesting, but I didn't think about the book series until almost a year later. After bringing only one book to read on my flight, I had finished it and needed a new book for my return flight. So I picked up the first book of the Halo series (Halo: The Fall of Reach) by Eric Nylund. The book is just over 7 years old.


Mass Effect: Ascension (Book Review)

Mass Effect: Ascension is the second novel of the Mass Effect series. The book is based on the game of the same name by BioWare. The author, Drew Karpyshyn, works for BioWare and has also written books on the BioWare's Knights of the Old Republic game.

I read the first Mass Effect novel before the Mass Effect XBOX360 game was released and I really enjoyed that novel. Now that I've finished the first novel and then finished the game (a few times), I have a decent idea of the Mass Effect universe so unlike the first book there wasn't a lot of introduction and general knowledge layout of the universe and species.


A Week of Wii

Last week, I got a chance to play with a Wii for the first time. I've been a recent console convert and picked up a XBOX 360 last year, so most of my comparisons will be versus the XBOX 360 and XBOX LIVE.

At first glance, the Wii interface is much more simpler than the current XBOX interface. (Note: The November 2008 XBOX UI upgrade is supposed to do a complete revamp of the UI. This was written before that update.)


Gary Gygax (1938-2008)

Most people will probably not know about Gary Gygax, but his influences have been instrumental in the gaming and fantasy industry for over the last thirty years or so.

If you've ever played a role playing game, such as World of Warcraft, Mass Effect, Final Fantasy, or Star Wars: Knights of the Old Republic, then you've experienced some of his legacy.

Along with Dave Arneson, they created and pioneered role playing games by publishing the game Dungeons & Dragons. Later, he co-founded Tactical Studies Rules (TSR) which published Advanced Dungeons & Dragons (and later purchased by Wizards of the Coast and then Hasbro who now owns the rights to the gaming system). An estimated 20 million people worldwide have played dungeons and dragons.

Games give you a chance to excel, and if you're playing in good company you don't even mind if you lose because you had the enjoyment of the company during the course of the game.

-- Gary Gygax, Aug. 15, 2004

Mr. Gygax was ranked #18 on "GameSpy's 30 Most Influential People in Gaming" (tied with J.R.R. Tolkien). He was so popular that he even has a strain of bacteria named after him ("Arthronema gygaxiana sp nov UTCC393"). He was also ranked as the #1 Nerd by Sync Magazine.

He has also written several novels including a Greyhawk series, several game system books, and a few essays and articles for gaming magazines.

I believe that Gary Gygax done for fantasy gaming the same thing that J.R.R. Tolkien did for fantasy novels. Sure, there were fantasy novels before Tolkien, but his writings continue to inspire and influence all fantasy related creations. In the same way, Gary Gygax's gaming system wasn't the first for fantasy genre, but it has inspired and influenced nearly every role playing game (even outside of fantasy genre) since it's creation.


Does playing video games make you a better software engineer?

Jason Kealey of LavaBlast wrote an interesting piece of how Super Mario Brothers made him a better software engineer (or "junior engineer" in his Canadian terms).

I think this is an interesting viewpoint to take. I remember having one of the first Nintendo system of my friends, but even before that I had a Coleco system and an Apple IIc+ with games.

Did any of that influence me? I'm willing to say yes. If I had never played video games as a kid, then I'd used my computer for word processing and spreadsheets for schoolwork.

As a teenager, I played games and attempted to write my own games. This taught me the very basics (and frustrations) of programming. I think this helped guide my early thought processes towards a more logical path and allowed me to more easier think in terms of conditional (if/switch), iteration (for, do, for each), and jump (goto, break, return) statements along with logic processing, which gave me a bit of an advantage later in life as I began professionally programming.

I don't know if the actual act of playing video games made me a better programmer or software engineer, but I would credit the creativity the video games unleashed as the result of playing them as more of the influence than the time spent playing games.

When I was younger, I probably spent as much time trying to make my own games or hacking shareware games on floppy disks as I did playing them.

Does playing games today help me? Probably not, but it still unleashes some creativity sparks when I find a rather interesting concept or an exceptional user interface design. And regardless, it's still fun and a great way to relieve some stress after writing a design or requirements document or finding out that you have to re-code a large section of the application due to "unforeseen circumstances."

Another article related to this is by Tim Stall at the .NET Developer's Journal titled "10 Rules that Age of Empires Teaches about Development".

[Via Arjan's World linkblog]

My Related Posts: , ,

How to create a heightmap and skydome using Terragen for XNA

In this example, I'm going to use the Generated Geometry Sample provided by the XNA Creators Club as the code base, so we can just focus on creating heightmaps and the skydome.

Terragen is a great scenery generator and best of all, it's free for personal (non-commercial) use. However, the unregistered version has some limitations such as the image dimensions that you can generate. There's a great gallery of Terragen graphics showcasing it's abilities. Terragen also has numerous plug-ins for other 3D software packages such as Blender, 3D Studio MAX, LightWave 3D, Maya, etc.

The heightmap used by the sample is named "terrain.bmp" and it's dimensions are 257x257. The sky image used by the sample is named "sky.bmp" and it's dimensions are 2048x1024. Both of these images are found in the root Content folder.

Generating the heightmap

When Terragen opens, you will find the Landscape dialog at the foreground. To generate a random terrain, click the Generate button. On the Terrain Genesis dialog, you can play with the various options for a bit. Finally, click the Generate Terrain button and then the Close button.

To preview the terrain, click the Render Preview button on the Rendering Control dialog. Without a texture applied, you probably won't see much.

Exporting the heightmap

To change the file dimensions, click on the Size button of the Landscape dialog (located in the Terrain panel). You can increase the size to 513x513 with the unregistered version of Terragen. Registering the software will allow you to export to higher resolutions.

You can export the surface to a RAW image format and then convert it to an image format such as BMP, JPG, etc. that is more friendly with the XNA environment. Alternatively, you can download the FEO (For Export Only) plug-in that enables you to save your terrains to BMP, DXF, RIB, and OBJ formats (once you follow the install instructions for FEO, you can click on Accessories and Export to BMP).

Once you get the image into a BMP format (or other XNA compatible format), just copy the file into your Content folder. We'll get back to that after we finish the skybox.

Generating the skydome

Now that we have the heightmap finished, we can move on to the skydome. In this sample, the skydome is just one image that wraps around the terrain. We can create this by taking four images (North, East, South, West) from the center of our scene and stitching them together.

First, we need to setup our scene.

Uncheck the Fixed Height Above Surface for camera and target (2 checkboxes) in the Camera panel.

Find a good spot to use as the center point. I chose the center of my surface (x=128, y=128 terrain units). I played around a bit with the altitude (z) until I wasn't below the surface.

Increase your detail slider to the max (rightmost) in the Image panel.

We need to apply some texture to the surface so our image will look nice. Click the Open button in the Surface Map panel of the Landscape dialog. Terragen comes with a handful of surface maps that you can use (you'll may need to browse to your Terragen install directory). I'll chose GrassAndSnow2.srf for my surface.

Exporting the skydome

Set your Image Width and Height to 960 and 960 (the best resolution you can export with unregistered is 1280x960).

The next few steps will take the longest time. You'll need to change your camera settings, render an image, and save the image for each of our four directions.

Alternatively, you can download the script at the end of this article to automate the process. It will still take a while to render each of the images, but at least you can walk away for a few minutes.

View Name Camera Heading Camera Pitch Camera Bank
North 0 0 0
East 90 0 0
South 180 0 0
West 270 0 0

Change the camera orientation to the above parameters, render the image, and then export the image. Once all 4 images are done, stitch the images together in a clockwise manner (N->E->S->W or S->W->N->E, etc.).

You may need to reduce the combined width of the image to 2048 to run on your PC.

Testing the scene

Open the GeneratedGeometryWindows solution.

Note: If you overwrote the files from the sample using the same filenames, then you can skip this part and just start the sample application to view your work. You will need to rebuild the solution, so that the XNB files are updated via the pipeline otherwise, it will load the old XNB files.

Adding the files to the project

In the Solution Explorer, make sure you enable the Show All Files option by clicking the button above the solution tree. Expand the Content folder (you may need to refresh the file list).

Select the terrain heightmap image from the previous steps, right click, and choose Include In Project. View the heightmap image properties and change the Content Processor to TerrainProcessor.

Select the sky image from the previous steps, right click, and choose Include In Project. View the sky image properties and change the Content Processor to SkyProcessor

Make code changes

Update the code in the function called GeneratedGeometry.LoadContent. The model loaded for the terrain object should be the filename that you created (do not include the file extension). The sky file loaded for the sky object should be the skybox image that you created (do not include the file extension).

Run the application

Build your solution and then click Start Debugging (or just press F5) to see your newly created heightmap and skydome. You may also want to turn off the Fog effects drawn on the terrain (in the GeneratedGeometry.DrawTerrain function).

Notes on the Generated Geometry sample

The sample code uses a tiled texture for the terrain surfaces, so unless you replace "rocks.bmp" with a more fitting texture, your landscape scene might look a bit out of place.

Skybox Script for Terragen

Copy the following script into Notepad and save as "SkyboxScript.tgs". Execute this script in the above steps. The below script will generate 4 images in your C:temp directory by changing the camera orientation to the same parameters as listed in the table above. The frend (frame render) command renders the image and saves to your temp folder. The images will be named skydome0001, skydome0002, skydome0003, and skydome0004. So just stitch them together in the same order.

initanim "C:tempskydome", 1 

Zoom 1.0
CamH 0
CamP 0
CamB 0

Zoom 1.0
CamH 90
CamP 0
CamB 0

Zoom 1.0
CamH 180
CamP 0
CamB 0

Zoom 1.0
CamH 270
CamP 0
CamB 0

Update 1 (3/4/2008): Some of my friends remarked that this post was useless without pics. With 3G of upload space remaining here, I might as well upload a few.

Scene example - generated from Terragen, default parameters
Terragen Scene Render

Heightmap example - generated from Terragen, default parameters
Terragen Heightmap Example

Skydome image example - generated from Terragen, default parameters using script above
Terragen Skydome Landscape render