Slide 1

Slide 1 text

Porting to x86 in Within A Git Workflow Sonic Dash @lee_winder

Slide 2

Slide 2 text

ONLY one With Git workflows there is

Slide 3

Slide 3 text

Time release branches master develop hotfixes feature branches Feature for future Tag 1.0 Major feature for next From this point on, “next release” means the release after Severe bug fixed for productio n: hotfix 0.2 Bugfixes from rel. branch may be continuously merged back Tag 0.1 Tag 0.2 Incorporate bugfix in develop Only bugfixes! Start of release branch for 1.0 Author: Vincent Driessen Original blog post: http://nvie.com/archives/323 License: Creative Commons

Slide 4

Slide 4 text

Time release branches master develop hotfixes feature branches Feature for future Tag 1.0 Major feature for next From this point on, “next release” means the release after Severe bug fixed for productio n: hotfix 0.2 Bugfixes from rel. branch may be continuously merged back Tag 0.1 Tag 0.2 Incorporate bugfix in develop Only bugfixes! Start of release branch for 1.0 Author: Vincent Driessen Original blog post: http://nvie.com/archives/323 License: Creative Commons The End

Slide 5

Slide 5 text

NOT quite…

Slide 6

Slide 6 text

@lee_winder

Slide 7

Slide 7 text

Time release branches master develop hotfixes feature branches Feature for future Tag 1.0 Major feature for next From this point on, “next release” means the release after Severe bug fixed for productio n: hotfix 0.2 Bugfixes from rel. branch may be continuously merged back Tag 0.1 Tag 0.2 Incorporate bugfix in develop Only bugfixes! Start of release branch for 1.0 Author: Vincent Driessen Original blog post: http://nvie.com/archives/323 License: Creative Commons

Slide 8

Slide 8 text

master Tag 1.0 Tag 0.1 Tag 0.2

Slide 9

Slide 9 text

master Tag 1.0 Tag 0.1 Tag 0.2 Tag 0.2.1

Slide 10

Slide 10 text

Doesn’t scale The concept of a single master branch when you have multiple supported releases

Slide 11

Slide 11 text

multiple releases?

Slide 12

Slide 12 text

Central workflow

Slide 13

Slide 13 text

server Client Client Client

Slide 14

Slide 14 text

server Client Client Client

Slide 15

Slide 15 text

clarity is greatly reduced when people start pulling from other peoples working copy

Slide 16

Slide 16 text

our git workflow

Slide 17

Slide 17 text

develop features/ releases/ bugs/ Tag 1.1.0 Tag 1.0.0 Tag 1.0.1 Branched as releases/1.0.x Branched as releases/1.1.x bugs/ branched and merged to releases/ only features/ branched and merged to develop only Cherry Pick this commit if we need it

Slide 18

Slide 18 text

NO master branch

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

develop

Slide 25

Slide 25 text

develop features/ features/x86_port

Slide 26

Slide 26 text

develop features/x86_port Unity beta installed features/

Slide 27

Slide 27 text

develop features/x86_port Unity beta installed features/

Slide 28

Slide 28 text

develop features/x86_port Unity beta installed features/

Slide 29

Slide 29 text

develop features/x86_port Unity beta installed features/

Slide 30

Slide 30 text

lee david Multiple people work on the same branch

Slide 31

Slide 31 text

balance between branch stability and branch count

Slide 32

Slide 32 text

as long as it’s not on develop

Slide 33

Slide 33 text

1.16.0 is released

Slide 34

Slide 34 text

develop features/x86_port Unity beta installed Tag + release 1.16.0 Branched as releases/1.16.x features/ releases/

Slide 35

Slide 35 text

what does a port consist of?

Slide 36

Slide 36 text

standard apps have a single executable

Slide 37

Slide 37 text

standard apps have a single executable Emulation is used to run arm apps on x86

Slide 38

Slide 38 text

ported apps have multiple executables

Slide 39

Slide 39 text

ported apps have multiple executables the right executable is used for the host platform

Slide 40

Slide 40 text

fat It’s called

Slide 41

Slide 41 text

Porting via was stupidly easy

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

fat for a reason

Slide 46

Slide 46 text

APP size 50MB Google Store Limit

Slide 47

Slide 47 text

APP size 50MB Google Store Limit Game released

Slide 48

Slide 48 text

APP size 50MB Google Store Limit Game released Additional characters added

Slide 49

Slide 49 text

APP size 50MB Google Store Limit Game released Additional characters added Texture optimisation

Slide 50

Slide 50 text

APP size 50MB Google Store Limit Game released Additional characters added Texture optimisation FAT binary support

Slide 51

Slide 51 text

APP size 50MB Google Store Limit Game released Additional characters added Texture optimisation FAT binary support Split APK

Slide 52

Slide 52 text

betas do have bugs

Slide 53

Slide 53 text

amazon build is still fat because of it

Slide 54

Slide 54 text

develop Unity beta installed Tag + release 1.16.0 Branched as releases/1.16.x features/ releases/

Slide 55

Slide 55 text

develop Unity beta installed Tag + release 1.16.0 Branched as releases/1.16.x features/ releases/ Time to merge back into develop

Slide 56

Slide 56 text

pull request consists of two stages

Slide 57

Slide 57 text

code review

Slide 58

Slide 58 text

No content

Slide 59

Slide 59 text

qa says no* *sometimes

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

develop Unity beta installed Tag + release 1.16.0 Branched as releases/1.16.x features/ releases/

Slide 62

Slide 62 text

1.17.0 is ready

Slide 63

Slide 63 text

develop Unity beta installed Tag + release 1.16.0 Branched as releases/1.16.x features/ releases/ Branched as releases/1.17.x

Slide 64

Slide 64 text

longer than we expected Testing took much

Slide 65

Slide 65 text

Getting devices was initially pretty tricky but also pretty cool

Slide 66

Slide 66 text

Getting devices was initially pretty tricky but also pretty cool

Slide 67

Slide 67 text

we were on 1.17.x longer than we wanted to be

Slide 68

Slide 68 text

develop Unity beta installed Tag + release 1.16.0 Branched as releases/1.16.x features/ releases/ Branched as releases/1.17.x

Slide 69

Slide 69 text

develop Unity beta installed Tag + release 1.16.0 Branched as releases/1.16.x features/ releases/ Branched as releases/1.17.x Tag + submit 1.17.0

Slide 70

Slide 70 text

develop Unity beta installed Tag + release 1.16.0 Branched as releases/1.16.x features/ releases/ Branched as releases/1.17.x Serious bug found in 1.16.0 Tag + submit 1.17.0

Slide 71

Slide 71 text

1.17.0 is in apple submission We can’t wait a week until we release a fix for Google

Slide 72

Slide 72 text

develop Tag + release 1.16.0 features/ releases/ Tag + submit 1.17.0 bugs/

Slide 73

Slide 73 text

develop Tag + release 1.16.0 features/ releases/ Tag + submit 1.17.0 Tag + release 1.16.1 bugs/

Slide 74

Slide 74 text

develop Tag + release 1.16.0 features/ releases/ Tag + submit 1.17.0 Tag + release 1.16.1 Cherry Pick this commit if we need it bugs/

Slide 75

Slide 75 text

pull request process is even more important Tag + release 1.16.0 releases/ Tag + release 1.16.1 Cherry Pick this submission if we need it bugs/

Slide 76

Slide 76 text

release branches can be dead ends

Slide 77

Slide 77 text

No content

Slide 78

Slide 78 text

No content

Slide 79

Slide 79 text

develop features/ releases/ Tag + submit 1.17.0 Tag + release 1.16.1 Tag + release 1.17.1

Slide 80

Slide 80 text

performance improvements

Slide 81

Slide 81 text

Frame rate Menus Game emulated binary fat binary

Slide 82

Slide 82 text

Frame rate Menus Game highest average 45 40 emulated binary fat binary

Slide 83

Slide 83 text

Frame rate Menus Game highest average 45 59 40 54 emulated binary fat binary

Slide 84

Slide 84 text

Frame rate Menus Game highest average highest average 45 59 40 54 45 35 emulated binary fat binary

Slide 85

Slide 85 text

Frame rate Menus Game highest average highest average 45 59 40 54 45 60 55 35 emulated binary fat binary

Slide 86

Slide 86 text

performance was unaffected

Slide 87

Slide 87 text

overview

Slide 88

Slide 88 text

Porting via was stupidly easy

Slide 89

Slide 89 text

develop features/ releases/ bugs/ Tag 1.1.0 Tag 1.0.0 Tag 1.0.1 Branched as releases/1.0.x Branched as releases/1.1.x bugs/ branched and merged to releases/ only features/ branched and merged to develop only Cherry Pick this commit if we need it

Slide 90

Slide 90 text

questions? @lee_winder