42
BEST PRACTICES FOR COLLABORATION BRIAN DAVIS Spreadsheet Design

GDS2015 spreadsheet_design

Embed Size (px)

Citation preview

Page 1: GDS2015 spreadsheet_design

B E S T P R A C T I C E S F O R C O L L A B O R A T I O N

B R I A N D A V I S

Spreadsheet Design

Page 2: GDS2015 spreadsheet_design

Why?

Page 3: GDS2015 spreadsheet_design

My Background

Page 4: GDS2015 spreadsheet_design

My Background

Page 5: GDS2015 spreadsheet_design

My Background

Page 6: GDS2015 spreadsheet_design

T O O L O P T I O N S

S P R E A D S H E E T S A S A B A L A N C I N G T O O L

M A K I N G M O R E R E A D A B L E S P R E A D S H E E T S

C O L L A B O R A T I O N A N D E X P O R T

I M P R O V I N G P R O F I C I E N C Y

Topics

Page 7: GDS2015 spreadsheet_design

Tool Options

Page 8: GDS2015 spreadsheet_design

Building Systems in Excel

Page 9: GDS2015 spreadsheet_design

Balancing Without Spreadsheets

Playtest

Repeat

Guess

Page 10: GDS2015 spreadsheet_design

Balancing With Spreadsheets

Game Values

Game Data

.XLSX

Formulae

Page 11: GDS2015 spreadsheet_design

Balancing With Spreadsheets

Good for

Games with lots of content

Complex interplay

Games as a service

Not great for

Small games

Curated experiences

Games without currencies

Page 12: GDS2015 spreadsheet_design

Manual Automatic

Set Values

PlaytestRecord Income

Income per

session

Expected Play

Patterns

Income Estimates

Calculating Incomes

Page 13: GDS2015 spreadsheet_design

Manual Automatic

Guess

PlaytestRevise

Cost Formula

Compare with

income

Automatic Pricing

Calculating Costs

Page 14: GDS2015 spreadsheet_design

Application

Income

• Players make 10 coins per minute

Behaviour

• Players play 3 minute sessions

• Three times per day

Formula

• A shield should take 2 days to earn

Cost• A shield costs 180 Coins

Income

• Players deal 5 damage per punch

Behaviour

• Players can punch twice per second

Formula

• A dragon should take 15 seconds to K.O.

Cost

• Dragons have 150 health

Page 15: GDS2015 spreadsheet_design

Formatting for readability

Page 16: GDS2015 spreadsheet_design

Don’t exceed your screen width

Horizontal scrolling can be tricky

If each row is an item, you should see all of it’s attributes at once.

Hiding rows can make it hard to write formulae

Hidden rows also complicates error detection

Watch out for…

Page 17: GDS2015 spreadsheet_design

Only have one data type per column

This example is readable

Whitespace is the enemy

Makes it difficult to compare items

Useless Whitespace

Page 18: GDS2015 spreadsheet_design

Never merge cells

Lookup functions break

Formatting becomes more difficult

Only use as a last resort

Only for presentation documents

Formulas which break

=COLUMN()

=HLOOKUP()

=INDEX()

=LOOKUP()

=OFFSET()

=ROW()

=TRANSPOSE()

=VLOOKUP()

Page 19: GDS2015 spreadsheet_design

Never wrap text

Text wrapping on one column doubles your whitespace

Consider text keys or a separate document for long text strings

Page 20: GDS2015 spreadsheet_design

Comments

Comments can be placed in a cell by clicking Insert>New

Comment

These are good for long comments to describe a column

Comments can also be made in a formula using +N(“”) This formats the text as a number

which it reads as +0 so it will not change the outcome

Page 21: GDS2015 spreadsheet_design

[ A L T ] + [ ↵R E T U R N ]- O R -

[ C T R L ] + [⌘C M D ] + [ ↵R E T U R N ]

Writing Readable Formulas

S H E E T R E F E R E N C E S

• K e e p y o u r t a b n a m e s s h o r t

• 5 characters or fewer allows more tabs to appear on the bottom of the screen

• I u s u a l l y c r e a t e a c o n t r o l p a n e l s h e e t n a m e d “ C ” t o k e e p f o r m u l a s s h o r t

Page 22: GDS2015 spreadsheet_design

Nested IFs are hard to read

Above is a formula for rounding to 2 Significant Figures

Below is a more elegant solution

Formula

Page 23: GDS2015 spreadsheet_design

Intuitive formula building

=B8*86400/M8

=B8/M8*86400

=(B8/M8)*86400

=(B8/M8)*(60*60*24)

=(value/time)*day

=Income per day

Page 24: GDS2015 spreadsheet_design

Named Tables

Page 25: GDS2015 spreadsheet_design

A warning about names

Named Ranges != Named Tables

Names cannot be reused in Excel

Tables are obvious, ranges are hard to see and easy to break

Page 26: GDS2015 spreadsheet_design

Color Code Titles and Tabs

Color cell A1 to match the tab

A unique font turns it into a logo

Page 27: GDS2015 spreadsheet_design

Turn Titles Sideways

Page 28: GDS2015 spreadsheet_design

Use conditional formatting to hide useless data

Turning useless values white makes this table easier to read

The same can be done with expected error values

VS

Page 29: GDS2015 spreadsheet_design

Vertical Monitors

Page 30: GDS2015 spreadsheet_design

Collaboration

Page 31: GDS2015 spreadsheet_design

Data Validation as Spellcheck

Page 32: GDS2015 spreadsheet_design

Tokens

Page 33: GDS2015 spreadsheet_design

Exporting

Design .xlsx

• Standalone

Game Values

• Imports on build

Page 34: GDS2015 spreadsheet_design

Exporting

Design .xlsx

• Standalone

Export .xlsx

• References Design.xlsx

• Contains no formulas

Game Values

• Imports the export values

Page 35: GDS2015 spreadsheet_design

Game Values

Override.json

Export.xlsx Design.xlsx

Page 36: GDS2015 spreadsheet_design

B U I L D A C H A R A C T E R G E N E R A T O R

M A K E A F O R M U L A R E F E R E N C E S H E E T

B U I L D R E C I P E S

Improving spreadsheet proficiency

Page 37: GDS2015 spreadsheet_design

Build a Character Generator

Page 38: GDS2015 spreadsheet_design

Build a Character Generator

Page 39: GDS2015 spreadsheet_design

Make a Formula Reference Sheet

Page 40: GDS2015 spreadsheet_design

Build Recipes

When you find something that works make a recipe

=INDIRECT(“R”&MATCH($A1,Sheet!$1:$1,FALSE)&”C”&MATCH(A$1,Sheet!$A:$A,FALSE),FALSE)

=LINEST(knownXs,knownYs^{1,2,3})

=“x3”*lvl^3+”x2”*lvl^2+”x”*lvl+”b”*(max-min)+min

Page 41: GDS2015 spreadsheet_design

=Indirect Match Recipe

Page 42: GDS2015 spreadsheet_design

Contact Me

@BrianDavisM

briandavism.com

The End