Game Development Middleware (Winter 2015/16)

This page contains materials for the Game Development Middleware (NSWI160) course that is/has been taught during winter term of 2015/2016 at Charles University in Prague, Czech Republic. The course is/was backed up by Jakub Gemrot (gemrot@gamedev.cuni.cz).

Dates

Wednesday’s workshops, 17:20, SW1

How to pass the practice

You will be required to self-study a certain aspect of chosen gamedev middleware and present that to others.

Workshops

Workshop 04 – Phaser and HTML5

  • Phaser is a full featured game engine that contains “shortcuts” for every standard gamedev related stuff (game states, assets loading, tweening, grouping, physics, clicking, controls…)
  • You can develop Phaser game either in JavaScript or TypeScript
    • There is a TypeScript plugin for Visual Studio 2013+
    • It should be available in Visual Studio Community edition as well
    • It spares you of a mundane task of setting and running own web server
    • You might need Web Publishing module to quickly push your game to world (via FTP)
      • Community edition should have this included…
  • You can follow TypeScript intro tutorial creating a game engine instance and running it
    • You will need to close Phaser repository to get the sources
    • Phaser for TypeScript consists of JavaScript files + TypeScript definitions
      • In fact TypeScript definitions are just documenting JavaScript API, i.e., Phaser is not recompiled by Visual Studio, that’s why you need its JavaScript files in runtime
    • Note that there are two types of definitions
      • Comment-less, e.g. phaser.d.ts
      • Commented ones, e.g. phaser.comments.d.ts
      • Commented ones are better as Visual Studio will display you the docs as you type 😉
      • But you can import only one set of those definitions!
        • So if you get a lot of “duplicate” errors, you’ve probably imported both
  • After you setup game skeleton, you can browse examples
  • Be sure to use Signals instead of plain JavaScript Events (inspired by AS3 Signals) if you are to define custom events
  • Some free tile editors might come in handy: Tiled, tIDE
  • If you plan to play with physics, it’s probably the best to buy PhysicsEditor
    • Free alternative: FizzX

Workshop 03 – UE4

  • We did Endless Runner tutorial
  • It covers mainly blueprints, which is UE new “scripting” language

Workshop 02 – Flash

  • FlashDevelop + Flex 4.6.0 and AIR 19
  • Flixel game engine (pure Flash, no Stage3D ~ GPU acceleration) + Flixel Power Tools (and its Test suite)
    • Flixel + FlashDevellop Hello World project tutorial
    • Flixel Power Tools webpage
    • Don’t expect this to play with Android or iOS nicely (performance issues)
  • Starling framework (using Stage3D) + StarlingPunk game engine (blog here)
    • Can be used for Android and iOS as well
      • You can get PC+WEB+Android+iOS with single engine for free
      • Even though there are technical considerations
        • But don’t get afraid / be fooled by others (like Unity, UE4), there are ALWAYS technical considerations for every game engine when it comes to mobile platforms
    • Starling Extensions
  • PD Particle System
  • Ogmo Level Editor
    • Spritesheet based (grid oriented) level creator
    • When comes to background, many things can be done using grid … any picture can be gridded 😉
  • ShoeBox
    • Spritesheet maker that even has console support!
    • Can be utilized in general for any spritesheet oriented engines
  • Extremely important AS3 gamedev libraries
    • AS3 Signals
      • Do not use AS3 events, signals are much better (signal.once += your_function … how cool is that?)
    • GTween
      • Allows you to create timeline of tweens and then go forward or even backward within the timeline (how cool is that again?)
    • Box2D
  • Last note
    • Do not use ‘static’ in AS3 its slower than standard calls / references (who would guess that hmm?)
    • And always use pools (do not let AS3 garbage collector to clean after you)

Workshop 01 – Unity

 

Leave a Reply

Your email address will not be published. Required fields are marked *