29
READY, STEADY, CROSS PLATFORM GAMES ON YOUR PHONE Phillip Trelford, @ptrelford Progressive .Net Tutorials 2015, #prognet

Ready, steady, cross platform games - ProgNet 2015

Embed Size (px)

Citation preview

Page 1: Ready, steady, cross platform games - ProgNet 2015

READY, STEADY, CROSS PLATFORM GAMES ON YOUR PHONE Phillip Trelford, @ptrelford

Progressive .Net Tutorials 2015, #prognet

Page 2: Ready, steady, cross platform games - ProgNet 2015

DON’T GAME CODERS USE C++?

YES

• Engines• Graphics• Sound• Physics

NO

• Scripts• AI• Interaction• Tools

Page 3: Ready, steady, cross platform games - ProgNet 2015

DO THEY REGRET IT?Veteran Games Programmer John Carmack extolling the virtues of functional programming at QuakeCon

Page 4: Ready, steady, cross platform games - ProgNet 2015

THE F IN F# STANDS FOR FUN!Phillip Trelford, @ptrelford

Progressive .Net Tutorials 2015, #prognet

Page 6: Ready, steady, cross platform games - ProgNet 2015

F# FOR PROFIT

Functional-first programming for:

• Time to Market

• Efficiency

• Correctness

• Complexity

Page 7: Ready, steady, cross platform games - ProgNet 2015

F# TESTIMONIALS

order of magnitude increase in productivity, GameSys

performance is 10× better than the C++ that it replaces, Insurance Co.

Units of measure reduced the chance of errors dramatically, Bing

F# is the night vision goggles I need when I go into the dark and attempt to solve previously unsolved problems, Microsoft

Page 8: Ready, steady, cross platform games - ProgNet 2015

MOBILE?Phillip Trelford, @ptrelford

Progressive .Net Tutorials 2015, #prognet

Page 9: Ready, steady, cross platform games - ProgNet 2015

PORTABLE IS DEAD… LONG LIVE MOBILE

• Android games now out-selling games for Sony and Nintendo handhelds

• IDC and App Annie's study suggests that iOS and Android combined now generate four times the revenues of dedicated gaming handhelds

- Guardian

Page 10: Ready, steady, cross platform games - ProgNet 2015

CROSS PLATFORM GAME ENGINES

Designer-orientated

• Unity (C#, F#, JavaScript, Boo)

• PhoneGap (JavaScript, F#, …)

• Marmalade

• …

Code-orientated

• XNA/MonoGame (C#, F#)

• PyGame (Python)

• Love (Lua)

• DirectX (C++)

Page 11: Ready, steady, cross platform games - ProgNet 2015

F# FOR GAMES

Page 12: Ready, steady, cross platform games - ProgNet 2015

EXAMPLE APPS

Path to Go | XBLA Pissed off Owls| iOS Pool | WebGL

Page 13: Ready, steady, cross platform games - ProgNet 2015

FRAMEWORKS FOR GAMES

• .Net• WPF/Silverlight/WinRTXAML

• .Net/Mono• XNA/MonoGameXNA

• F# to JS Compilation• WebSharper/FunScript

HTML5

Page 14: Ready, steady, cross platform games - ProgNet 2015

XNA IS DEADPhillip Trelford, @ptrelford

Progressive .Net Tutorials 2015, #prognet

Page 15: Ready, steady, cross platform games - ProgNet 2015

LONG LIVE MONOGAME

• Develop in Visual Studio (PC) or Xamarin Studio (Mac & PC)

• Cross Platform• iOS• Android• Windows• Mac OSX• Linux• Playstation Mobile• Ouya

Page 16: Ready, steady, cross platform games - ProgNet 2015

CROSS PLATFORM F#

.Net

• Windows• Windows Store• Windows

Phone

Mono

• Mac• Linux• iOS• Android• Ouya• Playstation

Vita

JS

• Chrome/IE• iOS• Android• Blackberry• Windows

Phone• Windows Store

Page 17: Ready, steady, cross platform games - ProgNet 2015

BUT WAIT…

Page 18: Ready, steady, cross platform games - ProgNet 2015

PROTOTYPE

10 WRITE Prototype

20 PLAY Prototype

30 IF fun THEN GOTO 20

40 GOTO 10

Page 19: Ready, steady, cross platform games - ProgNet 2015

THE GAME LOOP

User Input

Logic

Collision DetectionScore

Render

Page 20: Ready, steady, cross platform games - ProgNet 2015

TASKS

Page 21: Ready, steady, cross platform games - ProgNet 2015

TASK 1: BRAIN TRAINING

Page 22: Ready, steady, cross platform games - ProgNet 2015

TASK 2: FLAPPY BIRD

Page 23: Ready, steady, cross platform games - ProgNet 2015

RESOURCES

Page 24: Ready, steady, cross platform games - ProgNet 2015

CHOOSE YOUR OWN ADVENTURE

Page 25: Ready, steady, cross platform games - ProgNet 2015

TOOLING

MonoGame

Paint.Net / Gimp

MusicMaker Jam

Bxfr.Net (Sound effects)

Google

Page 26: Ready, steady, cross platform games - ProgNet 2015

F# KOANS

//---------------------------------------------------------------// About Let//// The let keyword is one of the most fundamental parts of F#.// You'll use it in almost every line of F# code you write, so// let's get to know it well! (no pun intended)//---------------------------------------------------------------[<Koan(Sort = 2)>]module ``about let`` =

[<Koan>] let LetBindsANameToAValue() = let x = 50 AssertEquality x __

Page 27: Ready, steady, cross platform games - ProgNet 2015

TRYFSHARP.ORG

Page 28: Ready, steady, cross platform games - ProgNet 2015

BUY THE BOOK

Page 29: Ready, steady, cross platform games - ProgNet 2015

Steps:

1. Enter game jams

2. Join 1 game a month

3. Publish your indie game

4. Make $$$

5. Go to 1