Wednesday, January 14, 2015

Art

So, you want to be a game developer but you have zero artistic talent, welcome to me. There's a few choices you can make, most of them suck.

At first I thought I could just buy all the art assets I would need to make a dumb game, so I started looking at the places I could buy assets from. You have a few choices. The unity asset store which has a ton of stuff but well, it's for unity (although i'm sure you could import some of them into UE4). Or you could use the Unreal marketplace but it just started and assets are pretty limited. Or you could buy models directly from Turbosquid but they can get pricey real quick. There's always OpenGameArt but, well, you get what you pay for.

All of the above suffer from the following; Either they are expensive, or you're artistic style will be a haphazard mess of objects that don't look at all alike. Artistic style in games is well, pretty critical. I came to the conclusion, I'd rather have shitty ridiculous looking models provided they generally followed a particular look.

So, I decided to make my own models, it's probably important to know the process anyways as a game developer (I assume) because so much of your code is going to be dealing with objects and their materials. A while back when I was doing my PunkBuster hacking, I used WebGL and threejs to do my presentation in 3D. I was using blender back then and well, it almost feels like the eclipse of 3d modeling programs (which if you are familiar with IDEs, this is not a good thing).

So I asked my friend for his copy of Maya (ha ha!), he pointed me to Softimage Mod Tool instead which is basically a full version of Softimage XSI 7.5 (pretty old, but still good). I started looking around for tutorials on how to use it because my goal was just to make a really dumb simple model, texture it, and import it into UE4. I came across this series of youtube videos by Edward Powell; part 1, part 2 and part 3. While he's importing into XNA (is that even supported any more? answer: no it's dead) the process for creating all the necessary details is the same, except we chose to export FBX files instead.

After I learned the basics of creating a model, creating the rendermap / texturemap applying the material I sought out to copy someone else's work for fun. (I guess I'm a reverse engineer by heart). I have an idea for a cartoony kids game so I was looking on Turbosquid for a simple model to copy. I came across this:
Luckily, in the viewer of turbosquid they also shared an image of the wireframe:
So that was my starting point, see if I can somewhat reproduce the tree on the right (the other trees are probably the same basic mesh but deformed on a curve). Here was my final result, after importing into UE4. I know it's terrible but hey it was my first asset so f'off.

So now that I know how to do the basics (and I mean very basic) the rest is fine tuning my skills and playing around in XSI. Another note, to learn a bit more of XSI, I signed up for a trial to DigitalTutors but I just can't justify the 20-40$ a month for a hobby that i'm dedicating only so much time to. 

Terminology

Before I make any more posts, I want to drop some terminology because like infosec (my background), there is a lot of it in game dev. I'll probably have to come back and update this post as I learn new things (which is seriously daily).

The List

Animation:

  • Skeleton - A skeletal mesh that represents an object that can be animated. 
  • Bones / Sockets - Basically joints in the skeletal mesh that are used for determining how the skeleton can move.
  • Rigging - The act of adding bones/sockets to a skeletal mesh. More details on wikipedia
  • Will add more but I haven't even started learning it yet.

Modeling: 

  • Transforming - Basically moving, scaling or rotating a mesh/actor. More details on how to do this from UE4's documentation
  • Rotate - Rotation of an actor on x,y,z axes.
  • Scale - The size of an actor on the x,y,z axes.
  • Edge, Polygon, Surface, Face - Just look at this picture
  • Mesh - The final product of that above image.
  • UV Mapping - 2D representation of a 3D model, wikipedia.

Texturing:

  • Materials - Something that is applied to an object to give it its visual appearance. Can control how light reacts to it, how bumpy it looks etc. Basically consider it a surface like wood or metal and what that looks like in various lighting conditions. A good write up is here, on UE4's documentation page.
  • Normal Map - a type of bump map used to add various details to a texture so it is not necessary to add more polygons but still get depth to the image/texture. See wikipedia.
  • Height Map - Also can be used in bump mapping to get elevation details out of an image, again see wikipedia.
  • Ambient Occlusion - See blenders write up. 
  • Specularity - How reflective a surface is. See wikipedia

Game Engine / UE4 Specific / 3D / Camera:

  • Coordinate Space - UE4's documentation has a nice table of the various coordinate systems.
  • View Frustum - Basically the field of view for the camera in the modeled world, wikipedia.
  • Orthographic Projection - Representing a 3D object on a 2D plane (i.e. your computer screen). Again, wikipedia.
  • Blueprints - Unreal Engine's Visual Scripting Language / System. It's awesome and i'll do a full post on it later. 
  • Ray casting - Used to determine, for example a projectile's rotation/direction and how far it will travel. Not to be confused with raytracing (which I totally did). See wikipedia.

Tuesday, January 13, 2015

I done did it

I've done. Finally. Well I started a month ago, but I'm finally taking the time to learn how to make games. I will probably suck at it, you probably shouldn't use this as a reference on how to make games because honestly? I have no idea what I'm doing. But I like documenting things, especially because my memory is so terrible. So yeah starting... now, I'm going to start documenting my learning process.

Step 1, Research Game Engines.
I'm going to be realistic here, who the hell has the time to make an entire engine on their own these days and one that's presentable? I do not, so I started looking at ready to go engines I could use. For the type of games I have in mind (RPGs, kids games, maybe 2d games) I needed a versatile engine. So I did what most people do, I started with unity. I immediately did not like it. For one, the pricing system is totally bonkers. If you use their free version, you can only make games that will make less than 100k USD. While I'll probably never get to that point, it's kind of lame to lock yourself into a system like that. So, I looked else where.

What are the other options? Not to start an engine war, but you're basically left with CryEngine or Unreal Engine. After reading various reviews and looking at their websites, I basically fell in love with Unreal Engine. The tooling looks amazing, the pricing is spectacular (20$ a month for FULL ACCESS TO THE ENGINE SOURCE). If you publish a game that makes > 5K USD you pay them only 5%, that's nothing.

So I have my engine, and well I've had it for about a month now. It is probably the most amazing tool I've ever used in my life. But I guess that's not saying much because my industry (infosec) is basically full of really crappy tools written by people who are not actually programmers.

Step 2, Learn The Engine
I've spent pretty much the last month watching the unreal's excellent video tutorials on how to use their blueprint system, how integration with C++ works and so forth. The ones by Zak Parrish are not only professional & well done, they are actually entertaining. A very hard thing to find in online video tutorials.

Step 3, Learn the Process
I have the benefit of knowing someone who has spent a large percentage of his life in the game industry so I have been relentlessly annoying him with dumb questions on how games are published, how tooling works and various other little details. Things I never knew about; like how critical tooling is (creating tools to aid in designers to build the game out), how models get created and imported into the engine, how textures are applied to the models and a whole slew of other really interesting processes regarding the workflow are slowly coming together. I'll probably plan a specific post on this or find a better link that describes it.

Step 4, Play & Learn
This is basically where I am at now. Reading documentation, playing with creating models for simple dumb games, looking over the example content that is provided by UE4. I'll document each of these as well in separate posts later.

I think that's it for now, stay tuned.