In this session we'll explore building cross platform indie games quickly and easily using Xamarin tools. We'll look at deploying to iOS, Android and even Raspberry Pi. Expect a splattering of practical game design tips and a segment where you get to adapt a popular arcade game on your laptop. Example code will be primarily in F#, but no prior experience of game development or F# is required.
2. F#UNCTIONAL LONDONERS
• Founded Feb 2010
• 1000+ Members
• Meets every 2 weeks
• Topics include
• Machine Learning
• Finance
• Games
• Web
http://meetup.com/fsharplondon
3. DON’T GAME CODERS USE C++?
YES
• Engines
• Graphics
• Sound
• Physics
NO
• Scripts
• AI
• Interaction
• Tools
4. DO THEY REGRET IT?
Veteran Games Programmer John
Carmack extolling the virtues of
functional programming at QuakeCon
5. THE F IN F# STANDS FOR FUN!
Phillip Trelford, @ptrelford
Birmingham Xamarin Meetup 2015
6. QUAKE 3 – F# SCRIPT
Will Smith @TIHanTime6h
@brandewinder @7sharp9 Finally got something going in #FSharp #Quake3. Messing
around with the weapon position. :) pic.twitter.com/zAZ439Kdch
8. 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
10. 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
16. LONG LIVE MONOGAME
• Develop in Visual Studio (PC) or Xamarin Studio (Mac & PC)
• Cross Platform
• iOS
• Android
• Windows
• Mac OSX
• Linux
• Playstation Mobile
• Ouya
24. 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 __