GDC 2014

GDC 2014 Session Scheduler

View, browse, and sort the ever-growing list of GDC sessions by pass type, track, summit, format, and day. With GDC Session Scheduler you can build your schedule in advance, and access it during the show via export or with the GDC mobile app, Please note that adding sessions to your schedule does not guarantee you a seat in that session. Sessions do fill up, so please arrive early to sessions that you would like to attend.

Start building your GDC agenda — create your linked account for the GDC Session Scheduler and the GDC Mobile App now!

Register now for GDC 2014!

Please note: Registration accounts are separate from Session Scheduler. Even if you've registered, please create a Session Scheduler account below.

Export Schedule:

Multitasking with Coroutines

Snorri Sturluson  |  Senior Software Engineer, CCP Games

Location: Room 132, North Hall

Format: Session
Track: Programming
Vault Recording: Video

Tasklets, as a form of cooperative multitasking, are used in EVE Online to drastically simplify program flow in scripts that need to run over multiple frames. Multithreaded programming works well for many things, but sometimes, especially in scripting, cooperative multitasking still has its place. This presentation describes how tasklets are used in EVE, both in the client as well as on the server, showing examples of what tasklets are used for, with Python code samples. The program flow using tasklets is compared to some alternatives, such as using state machines or multiple OS threads. The implementation of tasklets in Stackless Python as used in EVE Online is discussed, as well as some alternatives, such as using regular CPython with greenlets, or Lua using coroutines.


Attendees should walk away with a clear understanding of the benefits of using tasklets to manage high-level, long-running tasks in a scripted game engine, as well as good insight into how to implement tasklets in their own environment.

Intended Audience

Game engine and gameplay programmers, as well as anyone involved in scripting. It helps if you have insight into how scripting is implemented in the engine, but it's not a prerequisite.