Download presentation
Presentation is loading. Please wait.
Published byTodd Presnall Modified over 9 years ago
1
Scripting and AI Damián Isla, Moonshot Games
2
Scripting vs. Scripting Distinguish between scripting as technology and scripting as filthy hackery.
3
Scripting as Filthy Hackery “Lazy devs faking it in script instead of doing it for real in code.” Obviously absurd. Code doesn’t make it more real. Script is code. It’s all fakery if you go down far enough.
4
Faking it Robust vs. brittle systems Orthogonal to questions of implementation language Robust is always better A Matter of Economics we don’t have time to do everything well it works most of the time
5
The World is Lies... so what we should be asking ourselves is not “how do we avoid faking it” but “what’s the best way to fake it?”
6
The Most Important AI Technology Ever if then else
7
But this sucks if (ai.health < health_cover_threshold) { } else { }
8
Scripting as Architecture LUA Compiled to bytecode Hot swapping Highly embeddable Highly customizable Dynamic typing Months of dev time saved Kill me now
9
Pros and Cons We like Iteration times Expressivity Designer-accessibility We don’t like Performance Designer-accessibility
10
El Compromiso Systems that are performance-sensitive are generally NOT the systems where designer- expressivity is important. And vice versa.
11
Our Strategy Script as a pillar of the the Engine Component object model Components can be implemented in C++ Lua Script is also the special sauce Script is the glue
12
The [Production] Goal Lua can be used to create first-class systems from the ground up. 3 parts: component scripts system scripts data
13
Components and Script ABC D
14
AB
15
A Path This is where the fun lives B Animation
17
Component Soup A* Perception/ Ray-casting Target selection Behavior Physics Animation playback Animation control Squad behavior Random Script
18
Component Soup A* Perception/ Ray-casting Target selection Behavior Physics Animation playback Animation control Squad behavior Random Script Emit balloons from ears whenever player hits the elephant with the frying pan
19
Component Soup A* Perception/ Ray-casting Target selection Behavior Physics Animation playback Animation control Squad behavior Random Script
20
Component Soup A* Perception/ Ray-casting Target selection Behavior Physics Animation playback Animation control Squad behavior Random Script
21
Component Soup A* Perception/ Ray-casting Target selection Behavior Physics Animation playback Animation script Squad behavior Random Script Locomotion control
22
Component Soup emit_balloons initialize() attach() update() detach()
24
System Soup System script
25
System Soup Boids
26
System Soup
27
Data Need to be able to: save out the state of the scripts drive the system with data define the structure for both Lua can define structures define structures for engine-allocated data blocks engine controls the lifetime of these blocks Lua reads and writes to the blocks is NEVER allowed to allocate it’s own dynamic memory we lock the global scope after creation
28
System Soup ParametersState ParametersState System script
29
Script-based Systems What it gets us A fluid design environment avoid the “data-driven” code trap A place to put our hacks (Embrace the hackery) Continuity between prototyping and production
30
Initial Framework (Engineer) Implementation (Design) Final implementation (Engineer) Final buy-off (Design)
31
Engineer makes it work Design makes it work well Engineer makes it fast Design makes sure it still works well
32
Not so fast... Doesn’t mean you don’t need to Provide perf tools Think systemically about script Think seriously about interfaces between components Design all pieces as an architecture Help designers write good systems, not just good code But does mean that the architecture can evolve more fluidly and in a more design-driven way.
33
Concepts that don’t Exist (In code) Health / Death / Damage Weapons / Items / Equipment / Powers AI Behavior HUD / UI / Menus Missions / Levels / Objectives
34
One more distinction C++ high performance low (designer) expressivity game-agnostic Script low performance high (designer) expressivity game-specific The technology you keep around for next time The stuff that makes this game unique and awesome
35
Thanks!
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.