Monday 27 June 2011

Step 2 : Decide on our software

The next thing which you should do is choose on the the software that you consider should be used for your game project. I will go through some choices that I have found optimal. Many of these are not entirely free, but some can be for educational purposes. In any case, free alternatives are provided.

Modeling: Here are various programs which could be used to create models. If you are unfamiliar with the concept, the next section will explain it in more detail.

1. 3ds Max is a package provided by Autodesk that I personally find quite effective when dealing with models and everything model-related (Texturing, UV Mapping etc.) While it does not handle sculpting as well as may be hoped (despite having support for it), its poly-modeling capabilities are ideal for games. You would be able to download the 3ds Max trial here: http://usa.autodesk.com/3ds-max/ and try it out for yourself. It supports hundreds of tools necessary (and optional) for game development, while not being limited to the field, and is used by professionals worldwide.

2. Blender is a popular free alternative if you do not have the money to spend on expensive software such as 3ds Max. I do not truly have much experience using blender, and I have heard that the learning curve is steep, but many people have created decent models using it and this seems to be a good reason to recommend it. But choose this only if you are unable to afford 3ds Max and are not a student, as, from my knowledge, Blender is somewhat more unstable and less sophisticated. You can download blender from here: http://www.blender.org/download/get-blender/

3. Zbrush is another program that can be used to create models, but especially high-poly "sculptures". Although learning it is also somewhat difficult and it requires actual skill, working with it is basically like working with clay if you take the time to learn how to use it. You can download the Zbrush trial from here: http://www.pixologic.com/zbrush/trial/
    An alternative to Zbrush is Sculpturis (Free) (http://www.pixologic.com/sculptris/), which is made by essentially the same company. It is quite powerful, and should not be overlooked if you are not willing to spend much money.

4. Mudbox is similar to Zbrush, and is provided by Autodesk, which means that it has quite good support for interaction between itself and other Autodesk software (such as 3ds Max). The learning curve is considerably less steep than in Zbrush, and I find the user interface much cleaner. While it is less powerful, its superior support for a Wacom touch tablet makes it personally my tool of choice for digital sculpting.

Of course you might decide buy something exotic such as Maya, but in my opinion it is more suitable for movie development and visual artist. As game development in many cases involves the careful manipulation of polygons, Maya does not seem to be as suited for the task.


Audio:
   Although I am not much of an audio artist, I am still able to recommend a few programs that would let you create and manipulate music/sound effects.

1. Audacity (free) is a good choice for your general audio needs, and has many features you may find useful. It is a quite popular choice, which I feel to be justified. One thing it may not allow you to easily do, however, is create music from scratch.

2. Reason is a quite good synthesizer I have discovered that allows you to create music from a huge range of extensible instruments. While somewhat expensive, I was not able to find any free alternatives that yielded decent production quality.

3. Record your own sounds, or use the internet. It is very difficult to create sounds using the computer, so my advise would be to buy a good microphone and record different sound effects for your game. Then perhaps edit them to achieve a science fiction or horror feel. If you get a keyboard, you may record directly to the computer without much quality loss with the correct cables, and you would be able to use it to directly control software such as Reason through a MIDI interface. While learning a new instrument may seem like a daunting task, as many things, it is generally fun, and surprising results may be achieved even within a couple of days. Chances are you may find yourself developing a new hobby with your daily practice sessions.


Texturing: Textures are also an important part in creating a game. You should be able to use all of the software under the "Modeling" section to texture, so I will only show you software that would convert your textures from simple images to seamless normal-mapped textures.

1.Photoshop is a natural solution, albeit a rather expensive one. However, once obtain, it should serve the majority of your texturing needs, rendering the other tools essentially non-essential for any practical benefit.

2. Crazybump allows you to generate quality normal maps from a texture without having to create it yourself by hand or using special hardware, which can save quite some time. This is the tool which I currently use use for normal maps.

3. Paint.net is a program which allows you to manipulate textures in order to combine or enhance them. It is free, and much easier to use than Gimp (at least from my limited experience) and especially photoshop. I constantly use it in order to help texturing my models, and it never fails me in what I need to achieve, especially with the wide range of plugins available.


 
Game Engine: The final piece of software you will probably need. It basically combines all your assets together, allowing you to create levels, script them and play them. There are only three game engines that I have any mentionable experience with, and they are all relatively high-level. Anyway, they are:

1. UDK, commonly known as Unreal Engine 3, stands for the Unreal Development Kit and is a quite good choice for the ambitious developer. It has everything that you might need to create a game, although be warned that it is generally designed for FPS-style games, and may not be as suitable for other genres. Also, it features quite some overhead, so if your goal is a simple game then you may wish to avoid it. I find that there are also some difficulties and problems, such as the quality of real-time lighting and the difficulty in creating intractable meshes. Others, on the other hand, do not seem to have much difficulty with these things, nor with what I consider a quite outdated interface. It can be downloaded from here: http://www.udk.com/download
A recent development was the introduction of Unreal Engine 4, which can be downloaded for a small fee complete with source code (code that runs the engine itself). This certainly seems to be the better choice for the experienced coder, although it is still in an early stage of development. A powerful computer is required to run this version.

2. Unity offers a much more flexible interface compared to UDK, with a greater ease to alter the gameplay, allowing you to disassemble every asset and script it using the easy-to-use C# or JavaScript. Although Unity does not feature any node-based editors such as UDK's Material Editor and Kismet, it still might be easier in the long-run as it does not require you to look through all of the code already present (plus, such features may be gained with the use of plugins). Writing in JavaScript is much simpler than it seems, and can be done by mostly anyone who cares enough to attempt to learn the language, although I found it at a disadvantage to more complex languages when it comes to scripting more advanced things. The biggest disadvantage of Unity is that it does not offer as many features as UDK, making its graphics seem laughable in comparison in spite of recent developments. But If you are intending to create a small game, possibly to be played in the browser or on mobile, then this may be the ultimate choice. It might not have as many features, but it is certainly much easier to implement and script new assets in Unity compared to other game engines. You can get Unity here (Free/Pro trial): http://unity3d.com/unity/download/

3. Cryengine 3 is a great alternative if UDK and Unity do not suit your lusts. Now, I would go further and say that it is the superior of these engines, but that would only be my opinion. Packed with great dynamic lighting, realtime development and a friendly interface (all of which are not present in UDK), it is a great engine to use in order to fulfil your gaming dreams. Any info, as well as the download page, can be found here: http://www.crydev.net/

There are many more engines out there, but most are perhaps not worth mentioning. An exception would be the range of of lower-level engines, such as SFML and Ogre3D. These are engines (if the term applies) that directly integrate into the game code you are writing (assuming you choose to write the game yourself in a programming language such as C++). This, while making them more difficult to use, gives you much more flexibility. If you desire full flexibility, however, and are willing to spend time learning new concepts, you may wish to consider to merely use a graphics library such as Direct3D or OpenGL (the latter being my tool of preference). These are considerably harder to use, but are the things that essentially power the graphics of all of the game engines mentioned above. If you choose to use them, you will no longer be as constrained by arbitrary rules and limitations that you can't control, although in the end these may be more suitable as an educational experience.

7 comments:

  1. Unity has a lot of good features, especially in Unity Pro, however it's a whopping $1500, but it's sure worth the money, and they keep adding great features.

    ReplyDelete
  2. Whatever you are comfortable working with ^.^

    ReplyDelete
  3. I would have liked some info on the free vs. pro version. What kind of games/features would require unity pro? What would be the best engine with free commercial licensing, as all of these are not in some way.

    ReplyDelete
    Replies
    1. Well, you can find extensive detail regarding the differences on the official website, truly. I myself find that the lack of dynamic shadows makes it a rather poor choice for any realistic games. And yes, these engines are rather limited ^.^ Right now I am spending a lot of time researching programming, and one reasonable solution seems to be Ogre3D with C++. This is basically a graphics library you can use with your code that helps with a lot of different stuff. This would require more work, but if I'm not mistaken, is completely open source and gives much more freedom than any high level game engine like those mentioned above.

      Then of course you can make 2D games. I found that this is rather easy in C++ with libraries such as SFML (you might have noticed I'm biased towards C++... I've been learning a lot of that lately ^//^)

      Of course, if you want maximum control, you might try learning OpenGL or DirectX (I suggest the former, which is what I'm currently learning). These offer great flexibility, and would allow for many types of games which would have been impossible with normal engines. Of course, these require even more work, and might be best as a learning experience to start with.

      But if you only wish to stick to high level game engines like the ones listed here, I am not truly sure you would find better alternatives. I tried numerous times, but I kept returning to these three. One possible alternative I encountered was the Leadwerks engine, but after trying it it seemed rather buggy and underpowered in comparison.

      Anyhow, I hope that helped ^.^

      Delete