Tuesday, September 29, 2009

Early in game editor screenshots!

This in an early screenshot in IRREdit. I took this wile I was trying to figure out what kind of terrain I wanted and if I wanted the town to be placed right on it or within its own area. The terrain was made within an terrain editor called Terragen and modified by hand from within it. The textures were made within a program called T2 which is apparently a dead project. It can't make the terrain as good looking as I want it so I will have to apply textures to the terrain from within the Irrlicht engine. Fortunately the code for that has already been written, and the quality will be much better.

IRREdit early screenshot

As for the town, I decided to make it within its own area. There are three good reasons for this however. I can more easily create the town terrain from within wings3D than making a hightmap for it. I don't have the control I want of the terrain from within Terragen, and I have a specific layout in mind. And I will not have to worry so much about showing too many polygons and bogging down the players system from seeing the town too much from the distance.

So here is a screenshot of what I have done so far of the main town. The terrain is mostly untextured as of yet, and I do not have all of the buildings done yet. However I was able to obtain a very unique terrain and city layout by modeling it within wings3D rather than using a greyscale image hightmap.

IRREdit early town screenshot

I used a neat trick to help me out with placing the buildings. I took a screenshot of the terrain from above and edited it from within SAI, my drawing pad program. I then drew where I wanted the buildings and roads and labeled what each of the buildings were. I then reapplied that screenshot to the terrain. This allows me to see where I want the buildings exactly, rather then guessing where I want them.

I have a lot more buildings left to make and texture, however this allows me to see what I need more easily. After I finish with all of the buildings I will model the streets and then put in details like trees, bushes, and street lights. One neat trick is the windmills already turn!

Monday, September 28, 2009

Wings3d: Texturing a model with the Snap Image tool

Here is a time lapse video of a small tudor style apartment building being textured in Wings3d. Each video is a little over 7:30 mins long. This took about an hour however.

Part 1

Part 2

In the video I am texturing in Wings3D by using the Snap Image command in the tools menu. I used 7 different textures on this building. Most of them are 256x256px but the two wood textures are 128x128px and the iron texture is 64x64px. This method is a bit unusual but yields great results. I will be using the same textures all over my town for most of the buildings so this should be more efficient than using one 1024x1024px texture for each building. With the snap image tool I can get a very high quality look because I can scale the image to be as small as I want. It does take a wile to do however.

The trick is getting the correct camera angle. This is especially tricky when your wood texture is horizontal and the wood beams are vertical, this is why I sometimes tilt the building on its side. Also to ensure the texture is applied uniformly, it is best done in Orthogonal view.

You can change the color of the images after you have applied them too. You can see this done at about 7:00 mins into the second movie. It is done by editing the material the image is linked to and changing the diffuse color. This shows me making the chimney bricks slightly more red.

Sunday, September 27, 2009

Realistic 3D Rendering

Sometimes I like to see the final product of my work. Wings3d does not have realistic lighting built in, but I can get photo realistic lighting and affects by rendering my model and a scene in a rendering application like Kerkythea.

Georgian Townhouse

Hey that looks very realistic! This is a Georgian style townhouse I made wile trying to emulate the 1700's Georgian style. It is actually one of the first buildings I made. My goal for that model was to see how realistic I could make it, and I needed to figure out a good work flow and process to make buildings. It was made in several pieces on purpose so I could fit them together to make a two story or two window wide version. I also made it so I could easily switch out the front door for some variation. A funny feature in this model is that you can actually open the windows!

Honestly the features of this model are overkill. It took me an entire week to make correctly but I learned a lot from it. A modular design is often used in games nowadays but it is very difficult to get the pieces to fit together. The hardest part is to get the textures to line up so it does not look like there is a seam. If I made this two stories I would likely have to reapply the brick to make it seamless. Fortunately Wings3d has a Snap Image feature that makes it easy to re texture a model like this.

When I made the Georgian Townhouse I reapplied the texture several times throughout the modeling process. Every time I changed something I reapplied the texture to see if it worked right. That was the reason it took so long for me to make it. I now complete the model entirely before I texture it at all.

I no longer use this process for the most part. Sometimes I will reuse windows or doors across several models but beyond that I make the rest of the building in one piece each time. The models I am making now for my first town are made with my own version of the Tudor style. They are architecturally fairly realistic, however I do not plan to make the next super realistic game like Crysis or Oblivion. Usually they take about an hour to make and an hour to texture. I plan to make a slightly stylized game that is intentionally slightly unrealistic, that way its not unusual to see crazy environments or neat and fun looking towns.

Saturday, September 26, 2009

Growing Skills: Overview

If you are new to the gaming industry as am I, you will have to grow some skills. If you are lucky enough to have a partner then you can divvy up the work load. Fortunately RemixedCat is a graphics artist and handles making all of my textures.

3D modeling is where I started. I whipped out Wings3D and started playing around, messing with all of the menus and options. It takes a wile to get good at 3D modeling but its a lot of fun. I started with a lot of simple objects that I can still use in my game such as plates, cups, tables, and dressers.

Once you have some models made you will need to learn how to texture them. There are a couple ways to do it but getting it right can take longer than making the model itself if you are new to it. RemixedCat spent a lot of time making textures for me to use. Mostly stuff for buildings and terrain though. Most of them are cut right out of pictures of objects and then processed to make them seamless. We had to make sure our source images were open source or free to use, this avoids any later legal trouble.

I had to come up with a good game idea and fun game play. I borrowed a few themes and elements from some of my favorite Super Nintendo games and computer games and mashed them together to make a unique idea for an RPG. It won't be anything like Oblivion though, more like a less linear final fantasy game with real time game play and attacks. Play Hinterland for a general idea of the attack system, extra party members included.

Screenshot of Hinterland

The story line can take a wile to come up with too. The general theme for Lost Kingdoms is an invading army takes over the country you live in. You help the king escape and take asylum in a neighboring country. Most of the game you will be trying to help the king get the country back, too bad he is more like Gandhi than Genghis Khan. Once you have a setting and general idea of where your game is going it is a lot easier to make content for it.

Programing your game can be easy if you know exactly what you want in it. It can be imposable if you have not learned how to program however. I suggest grabbing a good book or two about the language your engine was written in and read them over. Afterwards its easy to learn from looking at the engines example programs. IRRLICHT has a good number of well documented examples to get you started with. Just don't forget to read the API documentation if you don't know how to use something.

It took me a wile to acquire all of these skills but I took them one at a time. As with any skill, they will improve with use. There is a lot of assets to make before the game is done. I only have a hill of them done, and I need a mountain!

Thursday, September 24, 2009

Making a Game: Tools of the Trade

You can't make a game with just your bare hands, you have to have the right tools! It can take a long time to decide what programs you need if you have never made a game before. Sometimes they are incompatible with each other and will not save files in a usable format. Or sometimes they just don't have the features you need.

If you want to make a 3D game you will need a 3d modeler, a photo editing program to make textures, a scene editor, and a game engine or graphics engine of your preferred programing language. Sometimes the 3D modeler you choose will not have all of the features you need and you will need to use a separate program for texturing or animating. The scene editor may come with the game engine or you could place all of the models in the game within the games code. Sometimes you can use the 3d modeler as a scene editor too. Also the game engine or graphics engine you choose may not have everything in it you want so you will have to program it in yourself.

These are the programs I will be using to make my game "Lost Kingdoms":
You have a lot of options when it comes to the 3d modeler. There are a lot of other professional packages available such as Maya, 3ds Max, and ZBrush. Many of them can handle everything with the 3d model including lighting, animation, and handling the scene. Wings3D and Blender are the two major free 3D modelers. A lot of people swear by Blender, however if you are just learning 3D modeling, I would suggest choosing something else. It is a potentially great program that suffers from having a seriously steep learning curve, and in my experience is very buggy. Wings3D Benefits from being one of the easiest to use 3D modelers out there, and is my favorite. Sure it does not do everything, but what it does do, it does great!

The choice of a graphics editor is easy. Go with whatever you have access to and are comfortable with. If you have not chosen one yet then try Gimp. Ive used Photoshop and Gimp and they have a lot of the same features. Im running on a tight budget so I tend to go with the free alternative. You may also want to use a repeating texture generating program such as Genetica or something similar. There are several to choose from, some free, some not. I also use a drawing program called SAI when I use my graphics tablet. It has some great tools and features that are absolutely invaluable to drawing.

A scene editor helps you put your game together. Once you have all of the 3D models done for a town for instance, the scene editor will let you place the models where you want them. IRREdit also allows me to place lights, terrain, primitives, and can do some simple animations like allowing a windmill to turn. IRREdit was written specifically for IRRLICHT so if you choose a different game engine you would need to find a different scene editor.

The game engine took me the longest to decide upon. I nearly went with the JMonkey Engine instead, and it would have been a good choice too. But there are a lot of major factors to decide upon when choosing a game engine. You have to find one written in your preferred programing language. If you do not have a preferred language then you would have to learn one. Fortunately IRRLICHT and JMonkey are good engines to get your feet wet with. IRRLICHT is written in C++ and JMonkey is written in Java. Ultimately it came down to one factor for me, it is easier to find reusable code and modules written in C++. I can easily plug in a physics engine like ODE Open Dynamics Engine into IRRLICHT, but I would have a hard time finding something similar written in Java.

Other concerns with a game engine choice is what kind of stuff does it support? Does it have a good community? Is it well documented? Is it up to date and support newer features and graphics shaders? Is it still being developed? Is it easy to modify or expand? Does it have networking support? With all of these questions it took me several months to research and find the right engine for me.

Now that I have all of that done, I better get started on my game! I have a long road ahead of me. Fortunately I'm not alone.