Warning: __attribute__((const)) does not mean function purity

Clang and GCC (and others) support function attributes __attribute__((const)) and __attribute__((pure)). These had always been explained to me thus: __attribute__((pure)): The function may read, but doesn't modify any global state. [This is true!]__attribute__((const)): The function neither reads nor modifies global state. [This is MASSIVELY OVERSIMPLIFIED to the point of being a lie!] The gigantic asterisk … Continue reading Warning: __attribute__((const)) does not mean function purity

Ryzen Optimization

Notes from a talk by Ken Mitchell of AMD Have to pay attention to cross core memory latencies in Threadripper Improvements in Windows Insider Program for TR memory interconnects Instruction set evolution: Zen+ has a ton of new features—pay attention to CLZERO, SSE3 Avoid mixing legacy SIMD and AVX instructions (has a penalty for switching)—move … Continue reading Ryzen Optimization

Automated Testing Process Roundtable

Notes from a roundtable discussion moderated by Andrew Fray at GDC 2019 For more, see autotestingroundtable.comFirst steps getting started with testingFirst decide what you want out of testing; if you want a rock-solid engine, need unit tests (despite it being hard on a legacy engine)Unit testingAnalyze how long it takes you to go through a … Continue reading Automated Testing Process Roundtable

Paid Acquisition on Mobile: A Scrappy, Practical Guide

Notes on a talk by Mike Gordon of Iron Horse Games Iron Horse has had 11M installs, mostly on Android, mostly paid acquisition Marketing in 3 phases on Google Play Google Play organic installs are significantly higher than Apple ROI tends to be better Open beta Don’t treat this as a test platform, because you … Continue reading Paid Acquisition on Mobile: A Scrappy, Practical Guide

Preventing Bugs: The Dark Matter of QA

Notes on a roundtable discussion at GDC 2019 Run by Chris Rando (@Rodneysquint)IGDA QA communityQA Mixer first floor of Marriot MarquisHow do we articulate how QA prevents bugsBug preventionDoing acceptance testing—QA sets the criteria to decide when something's done (rather than just doing some testing when the devs say it's done)QA involved in game design … Continue reading Preventing Bugs: The Dark Matter of QA

Decorticating “Dead Cells”: A business & marketing deep dive

Notes on a talk by Steve Filby of Evil Empire & IndieCatapult, formerly Motion Twin at GDC 2019 BackgroundMotion Twin did F2P browser games, tried to move to mobile F2P/premiumThrew out everything to make Dead Cells for PCLeft in 2016 to start marketing agency Indie CatapultStarted Evil Empire recentlyHow we made Dead Cells a hit … Continue reading Decorticating “Dead Cells”: A business & marketing deep dive

Automated Testing of Gameplay Features in “Sea of Thieves”

Notes on a talk by Robert Masella (@ZipLockBagMan) of Rare/Microsoft Studios Wanted automated testing on all parts of the code, incl. (notoriously difficult to test) gameplay featuresChallengesComplexity from open world designConstantly evolving game-as-a-serviceWanted to cut releases in a week... can't spend weeks on testingWhy use automated testingManual testing slow, unreliableSubtle bug in AI behavior gets … Continue reading Automated Testing of Gameplay Features in “Sea of Thieves”

Design by the Numbers: Using Data for Good

Notes on a talk by Evan Losi of Scopely at GDC 2019 Play tests only take you so farCapturing analyticsTrack everything—every time a player does anythingEverything a person interacts withWhich screens they openWhat activities people takeResources (what players earn and spend)Look at the aggregated dataKey metrics/KPIsEnd results of player behaviorRetention, conversions, ARPU/ARPDAUEverything sums up to … Continue reading Design by the Numbers: Using Data for Good

Ship Faster, Crash Less, and Retain Players

Notes on a talk by Dallas Dickinson of QC Games (Developers of Breach) and Abel Matthew, CEO of Backtrace, from GDC 2019 When you build new stuff, it crashesWant to prioritize crashesTracking crashes both in their own stack and in UnrealProcess (unidirectional flow here)Trunk development (70% of dev time spent here)New system devMain dev branch—nightly … Continue reading Ship Faster, Crash Less, and Retain Players