Wednesday, June 3, 2015

Roadmap for Learning Unreal Engine

As part of learning how to make an engine, I want to immerse myself in another engine.

I'm really good at Unity 3D, so I have a really good perspective about how it works. For contrast, I'm going to learn the next most popular engine, Unreal Engine. Learning Unreal has the added benefit of allowing me to sell some of my work on the Marketplace. Since I am most definitely working toward making an ocean renderer and a terrain generator, I can take them both a step further and turn them into full-on toolkits for Unreal Engine.

Below is the roadmap I'm planning to take in order to learn it:

  1. Blueprints
    1. Quick Start
      1. Required Setup
      2. Construct Launch Pad
      3. Convert Actor to Class Blueprint
      4. Create Starting Point
      5. Test Overlapping Actor
      6. Launch Character
      7. Assignments
    2. Basics
      1. Navigating the Graph
      2. Placing Nodes
      3. Connecting Nodes
      4. Creating Functions
      5. Setting and Getting Actor References
      6. Working with Arrays
      7. Collapsing Graphs
      8. Making Macros
      9. Debugging
      10. Blueprint Communication Project
        1. Sample Project Setup
        2. Event Dispatchers/Casting to Blueprints
        3. Binding Events on Spawn
        4. Communicating with HUDs
        5. Communicating with Multiple Blueprints
        6. Assignments
    3. More Advanced
        1. How to Set Up Input on an Actor in Blueprints
      1. How to Add Components in Blueprints
      2. How to Set Up Character Movement in Blueprints
        1. Character Setup
        2. Input and Game Mode
        3. Finishing Character Setup
        4. Creating Blend Spaces
        5. Animation Blueprint - Idle and Walk States
        6. Animation Blueprint - Crouch States
        7. Animation Blueprint - Jog State
        8. Animation Blueprint - Jump State
        9. Animation Blueprint - Prone State
      3. How to Find Actors in Blueprints
      4. How to Possess Pawns in Blueprints
      5. How to Reference Actors in Blueprints
      6. How to Set Up a Game Mode in Blueprints
      7. How to Set Up Inputs in Blueprints
      8. How to Spawn/Destroy an Actor in Blueprints
      9. How to use the OnHit Event in Blueprints
      10. How to use Raycasts in Blueprints
      11. How to use Timers in Blueprints
      12. How to use Cameras in Blueprints
      13. Class Creation
  2. C++
    1. Basics
      1. Quick Start
        1. Create a new Project
        2. Create a C++ Class
        3. Write and compile C++ Code
        4. Test
      2. Player Input and Pawns
        1. Customize a Pawn
        2. Configure Game Input
        3. Program and Bind Game Actions
        4. Assignments
      3. Game-Controlled Cameras
        1. Place Cameras In The World
        2. Control Camera View in C++
        3. Place A Camera Director In The World
        4. Assignments
      4. Variables, Timers and Events
        1. Creating an Actor that Uses a Timer
        2. Expose Variables and Functions to the Editor
        3. Extend and Override C++ with Blueprints
        4. Assignments
      5. Player-Controlled Cameras
        1. Attach a Camera to a Pawn
        2. Configure Input to Control the Camera
        3. Write Cod to React to Input
        4. Assignments
      6. Components and Collision
        1. Creating and Attaching Components
        2. Configuring Input and Creating a Pawn Movement Component
        3. Coding our Pawn Movement Component's Behavior
        4. Using our Pawn and Components Together
        5. Playing In Editor
        6. Assignments
    2. More Advanced
      1. Survival Game Tutorial Series
        1. Section 1
          1. Movement
          2. Animation
          3. Object Interaction
          4. Hunger System
          5. Networking Support
        2. Section 2
          1. Flashlight
          2. Inventory
          3. Switching Weapons
          4. Deal Damage
          5. Death
          6. Respawn
        3. Section 3
          1. AI Zombie
          2. PawnSensing
          3. Behavior Tree
        4. Section 4
          1. Dynamic Time of Day
          2. Advanced Player Spawning
          3. Game Loop
        5. Section 5
          1. Game Networking
          2. Carrying Around Barriers and Bombs
      2. Shader Development in Unreal
        1. Flat Shading
        2. Basic Diffuse
        3. Per Pixel Diffuse
        4. Basic Specular
        5. Per Pixel Specular
        6. Normal Maps
        7. Transparency Maps
        8. Transparency Masks
        9. Geometry Shaders
      3. Procedural Generation
        1. Procedural Mesh Generation
        2. Marching Cubes
          1. Marching Squares
          2. Basic Terrain Deformation
          3. Metaballs
            1. SPH Fluids
        3. Perlin Noise
  3. Projects
    1. Procedural Terrain Generation with Marching Cubes
    2. Ocean Toolkit
      1. Ocean Wave Simulation
      2. Wave Particles
      3. Object Interaction and Buoyancy
      4. Hybrid Simulation
    3. Fluid Toolkit
      1. SPH Simulation
      2. Eulerian Simulation
      3. Hybrid Simulation
This should get me up to speed on how Unreal Does Things. We'll see on Friday how good I feel about this, and we'll update and modify as we go along.

Monday, June 1, 2015

Routines and Current Plans

SAVE, then go to WAR

Alright, sometimes it happens as SAV and go to RAW, but who cares. This is based off of a concept I heard about from Puttylike, a blog I follow about being a multipotentialite (something I'll cover in its own blog entry). She called it the "Multipotentiate Morning," which is, itself based off of the Miracle Morning, The idea is to get up earlier than normal, and spend time doing the following:

  • Silence
  • Affirmations
  • Visualizations
  • Exercise
  • Reading
  • Scribing(Writing)
Called SAVERS, for obvious reasons. These are intended to help you be productive early, and set a precedent for being productive throughout the day. Her application was to make it so that you can work on all of your projects every day.

She modified it to fit her needs, and so have I modified it to fit mine. Coming from the small town that I do, and knowing all of my enemies for getting into the games industry: Procrastination, lack of a tech infrastructure, being overwhelmed, and a lack of knowledge; I have decided to characterize my whole thing as kind of a video game.

The first thing is to SAVE my game at the beginning of every day. This sets me a good foundation I can go to any time I start to feel like I'm losing my way. This remains unchanged. Start the day with about 30 minutes of various kinds of meditation, spend 30 minutes exercising, then I take an hour break to relax, eat breakfast, before spending 3 hours doing the next stage.

The second thing is to go to WAR. Writing(this blog), doing Art exercises, and then Reading. This allows me to do a little bit of work on one of my pet projects, specifically the part I feel like working on, without taking away from portfolio production time.

So mine is
  • Silence
  • Affirmations
  • Visualizations
  • Exercise
  • Reading
  • Writing
  • Art
  • Reading
This is further supported by a nightly routine, but there's no neat acronym for it. The general idea is to set a rhythm so I can easily get to sleep.
  • Plan next day
  • Hygiene
  • Litter Box
  • Clothes for next day
This way I am on the right track for the next day.

Current Plans

I've finally figured out exactly how I want to brand myself to employers, and what I really feel like I want to become the best at. I have a great amount of passion for real-time simulation, especially of water, and I have a great amount of passion for procedural generation. So my portfolio projects are going to focus on that. I'm trying to limit each part of this to one month "phases." I'm going to showcase three parts of my skills:

  • Ocean Surface Simulation
    • Phase 1: Basic Simulation
      • Basic Surface Simulation
      • Tiled Ocean
      • Perlin Noise displacement for each tile, and LoD tesselation
      • Foam and Whitecap generation
    • Phase 2: Advanced Effects
      • Wave Particles and Buoyancy
      • Splash Particles and SPH Interaction
      • Buoyancy Displacement of Surface
      • Terrain Interaction: Foam and Waves
    • Phase 3: Lighting
      • Caustics
      • God Rays
      • Fog
      • Diffuse
  • Procedural Generation
    • Phase 1: Basic Generation
      • Marching Cubes
      • Chunk Streaming
      • Procedural Texture Generation
      • Island Generation
    • Phase 2: Advanced Effects
      • Procedural Grass and Plants
      • Procedural Trees
      • Underwater Flora
    • Phase 3: Coupling Terrain with Water
      • Different Generation for Lakes and Rivers
      • Shore Waves and Flow displacement
  • 3D Rasterizer and Abstraction Layer
    • Phase 1: Basic Improvements
      • DirectX Rendering Abstraction Layer
      • Flat Shading
      • Faceted Lighting (per-vertex)
      • Diffuse Shading
      • Specular Shading
      • Various Texture Filtering Methods
    • Phase 2: Advanced Effects
      • Point Lights
      • Spot Lights
      • Multiple types of light
    • Phase 3: Engine
      • Input
      • Physics
      • Scripting
      • Shadows

My Artist Library, and the skills I'm going to need to build

Bruce Timm - DC Animated Universe
  • Simplified Anatomy
  • Action Lines
  • Strong Silhouettes
  • Simplified clothing (ideal for animation)
  • Angular drawing style
Bryan Konietzko (Avatar: The Last Airbender)
  • Extremely expressive faces
  • Simplified facial attributes (easier to make expressions)
  • Plays a lot with facial proportions
  • Strong poses (stronger than Timm's)
  • Action Lines
  • Good understanding of anatomy, wrinkles, fat
  • Still simplified anatomy
  • Generally rounded
  • Sub Style: Der-shing Helmer
Eiichiro Oda - One Piece
  • Always keep in mind that he's bad at drawing women, unless he's doing an extreme body type.
  • Switches between simplified chibi-ish style and strong anatomy
  • Strong shapes and silhouettes, especially on larger characters like Franky and Kuma
  • Plays a lot with body proportions. Keeps everyone a certain number of heads tall, but they may have a giant torso, or really long legs.
  • Extreme scale. Things tend to be scaled up to a ridiculous degree, like Water 7 being a giant fountain.
  • Heads and hair tends to have strong silhouettes (see Franky, Kuzan, Sengoku, Blackbeard)
  • Lots of extreme body types, when he wants to.
  • Lots of normal body types, too. Zoro and Sanji are muscled normals.

Hiromu Arakawa - Fullmetal Alchemist

  • Well defined noses (weird for anime, and mostly only on older characters)
  • Strong anatomy, generally not simplified
  • Strong facial anatomy as well on older characters
  • Differences in faces are made primarily by varying mouth, nose and eye sizes, and varying face shapes, although they're mostly either round, triangle, or heart shaped, with a few squares on the men.
  • Functional, mostly realistic designs

So the final list of skills is:
  • Anatomy
  • Strong Poses and Action Lines
  • Silhouette Design
  • Extremely simplified muscles
  • Extremely simplified clothing
  • Facial Anatomy
  • Expressions
  • Drawing mundane things at large scales
And of course, the big two that I need to learn before I learn those: Construction and Design. Those will take time, of course, but they're also the most fundamental skills, and will be just as important.

Several things have said that I should also pick a master to study from, and Leonardo DaVinci has always been one of my engineering idols, so he's the natural pick for me now, as I learn to draw.

Here's hoping this all goes fairly well!