Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

````` `````` ````` ```` ````` `````` ```````` ```````````````` `sssss/ `ossss/ -ssss. .ssss` -syhdy. +ssss+` `+sssssso: ./sssssssssssss+:` `sssssso. `ossss- osss: `ssso shdh/ /ssss+ -ossssss:` `:ossssssssssss/-` `/ssssss: +ssss. .ssso ssso .sdhys` :ssss: `/ssssss:` ./ssssssssssso/. `/ssssso. /ssso` /sss` oss++hyyss- .ssss- .osssss:` `-ossssssssss+:` `/sssss: :ssso `sss: oshhy-+ss+ `ssss. `/sssss/` ./ssssssssss/-` `-/+` `+- ./ssss+` -sss+ :sso +hho``sss. `osso. .ossss/` -+sssssssso/. `.:+ossss` `sso:` .+ssss: .oss: oss`-yhh. -ss/ +ss+` /ssss/` `/osssssss+:` `-/+sssssssss` `sssss+. .+sss+` `oss- .sssyhys` +ss` /ss+` .osss/` -+sssssso/-` `.:/osssssssssssss` /ossssso:` .+sss- `+ss. +dho-ss `ss- :ss/ :sss/. `:ossssso/.` `-/+ssssssssssssssssss` .:+sssss/. -+ss+` /so.shh.`so -s+ -ss: .oss+. -+sssss+:` `.:/ossssssssssssssssso+/:- ` `-+osss+-` -oso- :shhss+hdo +s..ss- :ss+. `:ossso/-` `-:+ssssssssssssssso+/:-.`` `so/:.` `-/osso/.`-os/`yhs`hNMMmoh/`oo..+s+. ./ssso/.` `.:/osssssssssssso+/:-.`` `ssssso+:-` `.:+ss+-`-ohyoyyNMMMMMN-+o.:s+.`:oss+:. `-:+osssssssso++/:.``` :/+osssssso/-.``:+oo:+yhsNMMMMMNMMmy.++-./oo/-``.-/osssssso+/:-.`` ``..--::// ``.-:/+ossso+:-+yyhd/NMMmdy+odmMNd::++/..-:+ossso+/:-.`` ``...-:://+oooosssssssss` `::--..``` ``.-:omNMd//+hh+/o///odMMMMmmd/+oooyss-.`` ``...--://++ooosssssssssssssssssssssss` `sssssssooo++//omMMN/:::hydy:y+/ymNNmmNmmhd/+osy+:/++oooossssssssssssssssssssssssssssssssssss` `+++++++++++++smMMMm/ohmNMMM+oNmyosyossysyyyo+o++++++++oooooooooooooooooooossssssssssssssssss` ````..-dMMMMMmMMMMMMMNhshdNNNmmmdmNMd/:--...``` ``````````````````````````````....... `://+++oooosssyyyshMMMMMMNhshMMMMMMMMMMMMMMMmo+oosoooo++//:--...`` `ssssssso+/:-.``.-+mMMMMMMmNMMMMMMMMMMMMMMMMMd:...:/+oosssssssssoooo+//::--..``` `o+/:-.`` `.:+oso+/mMMMMMMMMMMMMMMMMMMMMMMMMMNy+:-````.-:/+osssssssssssssssssooo++//::-...`` ` `.:/ossso/-``:ymMMMMMMMMMMMNMMMMMMMMMMMMMMmysso/:.` ``.-/+oosssssssssssssssssssssssso` `.-/+osssso/.``./os+-hNMMNNmmNdsyshNMMMMMMMMMMMMmsoossso+/-`` `.-:/+osssssssssssssssssss` `ossssss+:.` `:oss+. -syo/sy-:y:`s/`shdNMMMMMMMMMMNdyooossssso+:.` ``.-:+oossssssssssss` `ssso+:. `./sss+- `+ss- ohy:oy+-yy/ydmNMMMMMMMMMMMMMMmhooosssssso+/-`` `..:/+oosssss` `o/-` `:ossso- -oso. +NMMMMMNNMMMMMMMMMMMMMMMMMMMMMMMMmhysysssssssso+:.` ``.-:/+` ` `-+sssso-` `+sso. -mMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNmdyssssssssso+/-`` `:osssso:` -osso` .symMMMMMMMMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNmyoosssssssssso+:.` -+ssssso:` `+sss+` `oss/yNMMMMMNddho+hddh++oddmmhsdNMMMMMMMMMMMMNh+:+ossssssssssso+/-`` `ssssss/` -osss/` `+sso` oNMMMMNyso -sss: -ssss/.-odNMMMMMMMMMMMNdo:-/ossssssssssssso+:.` `ssss/. `+ssss/ /sss- /yNMMMNdss- +sss- .ossso- `:smNMMMMMMMMMMMNh/`./osssssssssssssss` `ss+. -ossss: :ssso osymMMMNys+ `ssss. `ossss/` `:smNMMMMMMMMMMNy:``.:ossssssssssss` `+. `+sssss: -ssss- .ssssdMMNhss` :ssso` `+sssso- .+ydmmNNNMMMMMMmy/.`.:+sssssssss` -osssss- .ssss+ /sss+-NMMNdy: ossso` /sssss/` .+sssyyhmddmmmMMmy+- `-+osssss` `+ssssss. `ossss. oyyyyyNMMMMNd. -ssss+` :ssssso- .+sssssssssosdmNNm- `-/oss` -ossssso. `ossss/ .ymmNNMMMMMMMNh +ssss+ -ssssss/` -osssssssss+/-:- `./ `/sssssso` +sssss` /syhhs++/ohhhh+ `sssss/ .sssssso- -ossssssssso/. -:::::::` `-::::. .----` .----- -:::-- `.-------` ```------------` `` :dddddhh- -mNmd- :+++++yy` +dddhs` odd+ :dhs+ `ysssssydmhy+ +MMMNmMMN+` -MMMM/ `:-hMM:-` yMMyNMm: sMMy `-:yd-- `MMMy---mMMMo +MMMm.mMMMd. .MMMM/ sMM yMM/.dMMo +MMy ` oMMo `MMMy://yMMM/ oMMMh `yMMMN- `NMMM/ oMN dMM` oNMhsMMm` `ho-` +m-. .MMMs+++yMMMo yMMM+ +NMMNo`mMMMo --.sMM+s. `NMM- `+mMMMm- `hMNdhmN/ oMMM. .MMMh dMMM+ .+mMMNNMMMN- +//////// .o+: `... -shmNN. dMM+ NMMd .MMMMs `/mMMMMNh. /Md- `+NMMN :hyo/. `.... .o-: `::s- :+s- `yo-s- `o.s/ :+s. .o.y/ .+: oddh` `+-o` /:/. :`:- `+ :+. ::/` :`/- ::/

Slide 3

Slide 3 text

Technology Stack ᴷᴷᴷᴷᴷᴷ TiledLib Lidgren Farseer XACT XNA f C# F ᴷᴷᴷᴷᴷᴷ

Slide 4

Slide 4 text

Technology Stack ᴷᴷᴷᴷᴷᴷ TiledLib Lidgren Farseer XACT XNA f C# F ᴷᴷᴷᴷᴷᴷ Procedural Greg Networking Alex Physics Stuart Audio/Graphics Allan

Slide 5

Slide 5 text

We use Git

Slide 6

Slide 6 text

We use Git

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

+ - Assets CLI Learning We use Git Asynchronous Distributed Free branches Merging Bitbucket

Slide 11

Slide 11 text

+ - Asynchronous Distributed Free branches Merging Bitbucket Assets CLI Learning We use Git

Slide 12

Slide 12 text

Tech Level Generation Big system, involving artists, game designer, programmers Procedural Responsive to the player’s progress Will incorporate fuzzy logic ! G ! !

Slide 13

Slide 13 text

Tech Level Generation Patrick Lorna Clio Tiled rGroup Library ... ... Level Models Library Models Collisions Metadata Algorithm

Slide 14

Slide 14 text

Tech Level Generation Interesting problem — minimising the memory footprint of the generator

Slide 15

Slide 15 text

Tech Level Generation Interesting problem — minimising the memory footprint of the generator Deleted To be generated We’re playing here Player

Slide 16

Slide 16 text

Tech Network One network manager per game instance Operates in client or server mode anytime Threaded message retrieval and separately threaded message parsing ! ! ,

Slide 17

Slide 17 text

Tech Settings We use persistent XML storage to minimise “magic numbers” Stores default values in case of XML file corruptions, a new one is created/loaded Settings files can be saved/loaded at run- time A single Settings Manager can be polled for retrieval of any settings values ! ! ! !

Slide 18

Slide 18 text

Tech Console In-game drop-down command console !

Slide 19

Slide 19 text

Tech Console In-game drop-down command console Allows run-time setting of values or calling of methods Can provide debug output ! ! 4

Slide 20

Slide 20 text

Tech Cel Shading Tried multiple techniques Normal-Depth difference Sobel edge detection filter Both sample nearby pixels

Slide 21

Slide 21 text

Tech Cel Shading

Slide 22

Slide 22 text

Tech Cel Shading

Slide 23

Slide 23 text

Tech Audio Split into multiple layers How do you keep them all sync? ! !

Slide 24

Slide 24 text

Tech Audio Split into multiple layers How do you keep them all sync? We play them all at the start and mute the ones we’re not using ! ! ! ! We cheat!

Slide 25

Slide 25 text

Tech Heartbeat Split into multiple layers Sprite sheet for blood vessel animation Scaled in code to simulate it beating = ! ! !

Slide 26

Slide 26 text

Tech Chase Fades between layers as heart beat decreases Also darkens lighting ! !

Slide 27

Slide 27 text

Tech Physics Solves the really hard problems for you If you can figure out how to make use of it with no documentation Abstracting for the rest of the team and defining fundamental data representation ? 8 , { Actors PhysicsActor Animatable definitions Interfaces

Slide 28

Slide 28 text

Tech Gameplay etc Biggest challenge is the state management — complex, lots of transitions, lots of edge cases Need for new stuff to have been delivered yesterday, other coders depend on new, untested code Great solution for state transitions — event- based system A lot of debug visualisations developed — helped massively in development ! S $ 4

Slide 29

Slide 29 text

Look at your source control, now back to Git (I’m on a horse)

Slide 30

Slide 30 text

! Thanks!