Image303


Some of the other posts Here are the other posts in the series.

Post 1 Windows 8 and Windows Phone 8 .NET Development Overview - Windows8AppFactor http://blogs.msdn.com/b/brunoterkaly/archive/2013/05/17/windows-8-and-windows-phone-8-net-development-overview-windows8appfactor.aspx
Post 2 Understanding XAMARIN – Create iOS, Android, Mac and Windows apps in C# http://blogs.msdn.com/b/brunoterkaly/archive/2013/05/18/understanding-xamarin-create-ios-android-mac-and-windows-apps-in-c.aspx
Post 3 Windows 8 Game Construction using Scirra’s Construct 2 http://blogs.msdn.com/b/brunoterkaly/archive/2013/05/19/windows-8-game-construction-using-scirra-s-construct-2.aspx

Introduction This post is the 4th in a series about providing additional content for the Windows 8 App Factor learning series.
  1. This post has two goals:
    • Describe the product Unity
    • Point developers to other Windows 8 Starter Kits

Quick Facts Here is some quick facts about Unity.
  1. Unity (also called Unity3D)
    • A cross-platform game engine with a built-in IDE developed by Unity Technologies.
    • Main advantage is that you are working in an authoring environment, not C++ in Direct3D.
      • Direct3D is not for the feint of heart.
    • You can also port to multiple platforms easily.
  2. Primary Use
    • Develop video games for web plugins, desktop platforms, consoles and mobile devices
  3. The things that simplify a developer's life
    • Asset Pipeline
      • Work with output from modeling software
      • Play with materials and textures easily
    • Building Scenes
      • Using building blocks (PreFabs, GameObjects, Components)
    • Iterating fast
      • Just hit "play" avoid long recompilations
    • Scripting, not C++
      • Less code means less headaches
    • Networking
      • Easily implement multi-player games
  4. Developer Audience
    • Utilized by over one million developers
  5. Focused on
    • Unity is primarily used to create mobile and web games
    • You can also deploy games to consoles or the PC
  6. Languages
    • Written in
      • The game engine was developed in C/C++
    • Supports
      • Able to support code written in C#, JavaScript or Boo
      • It currently supports development for iOS, Android, Windows, OS X, Linux, web browsers, Flash, PlayStation 3, Xbox 360, and Wii U
  7. Origins
    1. It grew from an OS X supported game development tool in 2005 to the multi-platform game engine that it is today
  8. Latest Version
    • The latest update, Unity 4.1, was released March 2013
    • 2 versions
      • The game engine is downloadable from their website in two different versions: (1) Unity and (2) Unity Pro


Image304 
Unity - What it supports for Graphics APIs The graphics engine uses the following APIs.
Graphics API Supported by Description
Direct3D Windows, XBOX 360 Direct3D is part of Microsoft's DirectX application programming interface (API). Direct3D is available for Microsoft Windows operating systems (Windows 95 and above), and for other platforms through the open source software Wine.
OpenGL Mac, Windows, Linux OpenGL (Open Graphics Library) is a cross-language, multi-platform API for rendering 2D and 3D computer graphics. Developed by Silicon Graphics Inc. in 1991. OpenGL is managed by the non-profit technology consortium Khronos Group.
OpenGL ES Android, iOS OpenGL for embedded systems such as mobile phones
Proprietary APIs Wii Set of C++ classes that allow you to connect to your Wii remote through Windows' HID interface to send and receive commands


Key features in programming graphics and games Here are some examples of the capabilities the modern game programmer needs.
  1. Bump mapping
  2. Reflection mapping
    • Efficient image-based lighting technique for approximating the appearance of a reflective surface by means of a precomputed texture image
    • Is more efficient than the classical ray tracing approach of computing the exact reflection by tracing a ray and following its optical path
    • Example
  3. Parallax mapping
  4. Screen space ambient occlusion (SSAO)
    • In realtime, it approximates the way light radiates in real life, especially of what are normally considered non-reflective surfaces.
    • For objects that are close together areas tend to block out or occlude ambient light, hence they appear darker.
  5. Dynamic shadows using shadow maps
  6. Render-to-texture



Image305

Game Types Video games can be categorized into different genres, which is nothing more than a fancy way to categorize games based on the gameplay interaction.
  1. In the action game category, you will find some familiar approaches to gaming, such as a fighting game, a pinball game, ball and paddle, and first-person shooter, to name a few.
  1. For additional genres, see http://en.wikipedia.org/wiki/Video_game_genre


Image306

Top-down perspective AKA bird's-eye view, Overworld, overhead view or helicopter view.
  1. Used be popular with 2D role playing video games
    • SimCity
    • Pokémon
    • Railroad Tycoon
    • The Legend of Zelda
    • Grand Theft Auto
  1. Microsoft GunPowder


Image307 


Unity Editor interface

You will need to learn the user interface.
clip_image002


Unity and the demos A lot of great examples are available to give you a clear picture of what is exactly possible with Unity.
  1. Check out demos below

of4wikwq

Asset Workflow

You generally need a 3D modeling package to create a rough version of your asset. Maya3D is typically used.

 A scene contains a collection of assets.


Key Relationships At a high level, here is the way to think about how scenes are constructed

zsgxk1xs
  1. Assets - Examples
    • Materials
      • Materials have textures
      • Materials are applied on to GameObjects
    • Animations
      • Animations are applied on to GameObjects
    • Sound Files
      • Sound files are added to GameObjects
  2. Unity defines the following components:
    • Scripts
    • Mesh Renderer
    • Animation
    • Audio Source
  3. You can group things together with PreFab
    • Prefab is top level component for GameObjects
    • GameObjects + Components = PreFab
      • Think of GameObjects as types and PreFab as real live obects
  4. You can clone PreFabs and all clones can update in unison

Creating Scenes Scenes contain the objects of your game
  1. Scenes contain the objects of your game
  2. Scenes instantiate PreFabs and GameObjects
  3. Scenes have cameras and act as the eyes for the scene
    • The player looks through the camera
    • Cameras can be pointed and positioned
  4. Scenes have lights and create shadows

Image308

Grid App Templates There are a number of samples that demonstrate the use of the Grid App template available on CodePlex.

image
  1. With each sample, you typically get both C# and JS versions:

Examples Cover many categories

News Travel Baby Journal Pictures
Financial Advisor Recipes Shopping and more