Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD...
Transcript of Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD...
![Page 1: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/1.jpg)
Building a Modern MUDwith your host, termie
Friday, July 20, 12
![Page 2: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/2.jpg)
Me.
Friday, July 20, 12
![Page 3: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/3.jpg)
Me.
Friday, July 20, 12
![Page 4: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/4.jpg)
Why?
working on games always seemed like a dream job, probably isn’t
i really loved playing muds so much, i wanted to make one where users could surprise me again
minecraft, dwarf fortress, lo-fi and indie games back on the rise
Friday, July 20, 12
![Page 5: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/5.jpg)
working on games always seemed like a dream job, probably isn’t
i really loved playing muds so much, i wanted to make one where users could surprise me again
minecraft, dwarf fortress, lo-fi and indie games back on the rise
Friday, July 20, 12
![Page 6: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/6.jpg)
working on games always seemed like a dream job, probably isn’t
i really loved playing muds so much, i wanted to make one where users could surprise me again
minecraft, dwarf fortress, lo-fi and indie games back on the rise
Friday, July 20, 12
![Page 7: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/7.jpg)
this talk
Ancient Times
Contemporary Inspirations
A Modern Approach
Future Awesomeness
Where It’s At / Demo
Friday, July 20, 12
![Page 8: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/8.jpg)
ancient times
Friday, July 20, 12
![Page 9: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/9.jpg)
ancient times
interactive fictionWest of HouseYou are standing in an open field west of a white house, with a boarded front door.There is a small mailbox here.
>
zork!
not designed for multiple users
inform 7
Friday, July 20, 12
![Page 10: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/10.jpg)
interactive fiction
Volume 4 - Physical Environment
Book 1 - The Study
Chapter 1 - Basic Room
The Water Study is a room. "The walls are painted black with simple architectural motifs, except for the cunning panel of three green pears[if the pitcher is whole] and a pitcher of water. The glass is painted so that light seems to fall through it from [the window], and the pears are[end if] luscious enough to eat[if the pitcher is ruined]. The shards of glass and the pool of water are a little hard to explain, but might be written off as the artist's odd fancy[end if]." The printed name of the Water Study is "Study with Pears and [if the pitcher is whole]Pitcher[otherwise]Spilled Water[end if]".
Instead of going nowhere: say "You can go in and out the window, but otherwise gallivanting around the villa is a bad idea. The other rooms are full of soldiers."
found out about inform last year at oscon
ben collins-sussman
Friday, July 20, 12
![Page 11: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/11.jpg)
interactive fiction
Volume 4 - Physical Environment
Book 1 - The Study
Chapter 1 - Basic Room
The Water Study is a room. "The walls are painted black with simple architectural motifs, except for the cunning panel of three green pears[if the pitcher is whole] and a pitcher of water. The glass is painted so that light seems to fall through it from [the window], and the pears are[end if] luscious enough to eat[if the pitcher is ruined]. The shards of glass and the pool of water are a little hard to explain, but might be written off as the artist's odd fancy[end if]." The printed name of the Water Study is "Study with Pears and [if the pitcher is whole]Pitcher[otherwise]Spilled Water[end if]".
Instead of going nowhere: say "You can go in and out the window, but otherwise gallivanting around the villa is a bad idea. The other rooms are full of soldiers."
found out about inform last year at oscon
ben collins-sussman
Friday, July 20, 12
![Page 12: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/12.jpg)
interactive fiction
Volume 4 - Physical Environment
Book 1 - The Study
Chapter 1 - Basic Room
The Water Study is a room. "The walls are painted black with simple architectural motifs, except for the cunning panel of three green pears[if the pitcher is whole] and a pitcher of water. The glass is painted so that light seems to fall through it from [the window], and the pears are[end if] luscious enough to eat[if the pitcher is ruined]. The shards of glass and the pool of water are a little hard to explain, but might be written off as the artist's odd fancy[end if]." The printed name of the Water Study is "Study with Pears and [if the pitcher is whole]Pitcher[otherwise]Spilled Water[end if]".
Instead of going nowhere: say "You can go in and out the window, but otherwise gallivanting around the villa is a bad idea. The other rooms are full of soldiers."
found out about inform last year at oscon
ben collins-sussman
Friday, July 20, 12
![Page 13: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/13.jpg)
ancient times
telnet
Let’s face it, kinda sucks
best thing we had at the time
Connected to term.ie.Escape character is '^]'.
Friday, July 20, 12
![Page 14: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/14.jpg)
ancient times
line oriented protocols
MCP, basically described a system of passing additional information for clients via what amount to comments that clients were meant not to display
#$#spam 12345 from: Biff text*: "" _data-tag: 9b76#$#* 9b76 text: This is some sample text.#$#* 9b76 text: #$#* 9b76 text: Note that you don't need to quote strings#$#* 9b76 text: in multiline data. Also, you can include "special"#$#* 9b76 text: characters like quotes. Everything after the#$#* 9b76 text: space after the keyword and colon is considered#$#* 9b76 text: part of the value.#$#* 9b76 text: This means that spaces can also be part of the value.#$#: 9b76
Friday, July 20, 12
![Page 15: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/15.jpg)
ancient times
lpc
LPC was the first programming language i used extensively at the time
printed out the manual at my mother’s office inherit "/lib/room";
void create() { ::create(); set_short("a simple room"); set_long("A simple room in a simple building."); set_description("This is a simple room in a simple building. It is very nice."); add_exit("north", "/realms/descartes/north_room");}
Friday, July 20, 12
![Page 16: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/16.jpg)
ancient times
lots and lots of MUDs
one thing i definitely found out when researching this
people still working on them
people still playing them
pretty much everybody tried to write one
Friday, July 20, 12
![Page 17: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/17.jpg)
contemporary inspirations
Friday, July 20, 12
![Page 18: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/18.jpg)
contemporary inspirations
evennia
twisted, django
comet (precursor to websockets) style web interface in addition to mud protocols
relatively full-featured
all-in-one server
i don’t really like twisted any more (though it taught me everything i know)
Friday, July 20, 12
![Page 19: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/19.jpg)
contemporary inspirations
nakedmud
c, python for scripting
rather mature but very stripped down, no stock combat, currency, etc
all-in-one server
c, yuck
i looked at its source a bunch to see which things i hadn’t thought about yet for my code
Friday, July 20, 12
![Page 20: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/20.jpg)
contemporary inspirations
imaginary
i don’t think it is a joke, but it might be
twisted, meant to be a simulation
can’t really find the code anywhere
Friday, July 20, 12
![Page 21: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/21.jpg)
contemporary inspirations
imaginary
i don’t think it is a joke, but it might be
twisted, meant to be a simulation
can’t really find the code anywheremaybe glyph knows more ?
Friday, July 20, 12
![Page 22: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/22.jpg)
contemporary inspirations
second life
not really a mud, but has many object-creation characteristics that cater well to developers
housemate worked on it, always discussed possible ideas about hosting own land
it’s graphical and i think that takes away a lot from the immersive experience, the space between things makes worlds feel empty
Friday, July 20, 12
![Page 23: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/23.jpg)
contemporary inspirations
playsh
totally awesome project from a few years back, ben cerveny and matt webb
users are basically in a python shell connected with other python shells, and can share objects
has a perspective concept where the client interprets the available verbs and properties with the goal that individual clients can be interacting while playing different types of games
Friday, July 20, 12
![Page 24: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/24.jpg)
a modern approach
Friday, July 20, 12
![Page 25: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/25.jpg)
a modern approach
distributed game world
locations can run in different processes, different servers
most calls require very little state
trust models
i looked at eve online quite a bit in modeling it
why is that better? well, it implies certain scaling characteristics, allows usage of high-end load balancing techniques
Friday, July 20, 12
![Page 26: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/26.jpg)
a modern approach
rpc-style interactions
rich objects rather than line-oriented (json at the moment)
calls get routed between users and (users, npcs, objects) via the location or world
why is this better? - structured data makes clients much easier to write- it also makes parsing the interactions easy- would still like to add NLP stuff
Friday, July 20, 12
![Page 27: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/27.jpg)
a modern approach
cryptographically signed items
items, locations, users, everything has a trust chain
this allows for many types of interactions that do not require checking a database
also allows in-game entities to create new items that they can trust, for example a bank
Friday, July 20, 12
![Page 28: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/28.jpg)
a modern approach
connections to external resources
objects can be represented by REST web services
notch and his MMO and DCPU to operate while out
maybe instead an avatar that forwards messages to a web service?
github integration
Friday, July 20, 12
![Page 29: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/29.jpg)
future awesomeness
Friday, July 20, 12
![Page 30: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/30.jpg)
future awesomeness
world state based on voting
sci-fi has a lot of really interesting philosophical models
demarchy
liquid democracy
example voting topics:- new users, possibly limited resources- certain votes required to affect story line
Friday, July 20, 12
![Page 31: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/31.jpg)
future awesomeness
self-hosted locationsregister a location running on your own server
possibly connect your own entire world, see federation / layering later
Friday, July 20, 12
![Page 32: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/32.jpg)
future awesomeness
credit for accepted pull-requests
give people in-game credit for successfully submitting patches to the project
connect to the real world
also, bittorrent file-sharing
Friday, July 20, 12
![Page 33: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/33.jpg)
future awesomeness
DCPU-controlled robots
bunch of VMs already for DCPU
why not allow you to program NPCs with it?
different programs could possibly be traded
cost credits to run
Friday, July 20, 12
![Page 34: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/34.jpg)
future awesomeness
federated / layered worlds
because things are signed, a person could be in two worlds at the same time
trusting one cert might show the current world, but trusting a new cert might allow interaction with a world on top of that
new people might be on a “lower plane”
Friday, July 20, 12
![Page 35: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/35.jpg)
where it’s at / demo
Friday, July 20, 12
![Page 36: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/36.jpg)
where it’s at
worlds, locations,npcs, objects
servers
endpoints
all using pretty much the same interfaces right now
zmq
Friday, July 20, 12
![Page 37: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/37.jpg)
worlds, locations, npcs, objects
where it’s at
Friday, July 20, 12
![Page 38: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/38.jpg)
where it’s at
worlds, locations, npcs, objectsuser
Friday, July 20, 12
![Page 39: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/39.jpg)
where it’s at
worlds, locations, npcs, objectsuser
Friday, July 20, 12
![Page 40: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/40.jpg)
where it’s at
worlds, locations, npcs, objectsuser
Friday, July 20, 12
![Page 41: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/41.jpg)
where it’s at
worlds, locations, npcs, objectsuser
Friday, July 20, 12
![Page 42: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/42.jpg)
where it’s at
worlds, locations, npcs, objects
Friday, July 20, 12
![Page 43: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/43.jpg)
where it’s at
worlds, locations, npcs, objects
Friday, July 20, 12
![Page 44: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/44.jpg)
where it’s at
locations.txthousemate made a joke about not creating a language over a weekend that gets used for 10 years
Friday, July 20, 12
![Page 45: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/45.jpg)
locations.txtawakeningYou are cold. You shake. You cannot breathe. The liquid around you drainsaway and you open your eyes to a birthing chamber.
EXITSthe door: testing_chamber_0
OBJECTSthe rock: rock_singularity
testing_chamber_0This is a small white room. There is a console.
EXITSthe door: testing_chamber_1
OBJECTSthe rock: rock_singularityconsole: testing_console_0
Friday, July 20, 12
![Page 46: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/46.jpg)
locations.txtawakeningYou are cold. You shake. You cannot breathe. The liquid around you drainsaway and you open your eyes to a birthing chamber.
EXITSthe door: testing_chamber_0
OBJECTSthe rock: rock_singularity
testing_chamber_0This is a small white room. There is a console.
EXITSthe door: testing_chamber_1
OBJECTSthe rock: rock_singularityconsole: testing_console_0
Friday, July 20, 12
![Page 47: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/47.jpg)
locations.txtawakeningYou are cold. You shake. You cannot breathe. The liquid around you drainsaway and you open your eyes to a birthing chamber.
EXITSthe door: testing_chamber_0
OBJECTSthe rock: rock_singularity
testing_chamber_0This is a small white room. There is a console.
EXITSthe door: testing_chamber_1
OBJECTSthe rock: rock_singularityconsole: testing_console_0
Friday, July 20, 12
![Page 48: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/48.jpg)
locations.txtawakeningYou are cold. You shake. You cannot breathe. The liquid around you drainsaway and you open your eyes to a birthing chamber.
EXITSthe door: testing_chamber_0
OBJECTSthe rock: rock_singularity
testing_chamber_0This is a small white room. There is a console.
EXITSthe door: testing_chamber_1
OBJECTSthe rock: rock_singularityconsole: testing_console_0
Friday, July 20, 12
![Page 49: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/49.jpg)
locations.txtawakeningYou are cold. You shake. You cannot breathe. The liquid around you drainsaway and you open your eyes to a birthing chamber.
EXITSthe door: testing_chamber_0
OBJECTSthe rock: rock_singularity
testing_chamber_0This is a small white room. There is a console.
EXITSthe door: testing_chamber_1
OBJECTSthe rock: rock_singularityconsole: testing_console_0
Friday, July 20, 12
![Page 50: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/50.jpg)
locations.txtawakeningYou are cold. You shake. You cannot breathe. The liquid around you drainsaway and you open your eyes to a birthing chamber.
EXITSthe door: testing_chamber_0
OBJECTSthe rock: rock_singularity
testing_chamber_0This is a small white room. There is a console.
EXITSthe door: testing_chamber_1
OBJECTSthe rock: rock_singularityconsole: testing_console_0
Friday, July 20, 12
![Page 51: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/51.jpg)
locations.txtawakeningYou are cold. You shake. You cannot breathe. The liquid around you drainsaway and you open your eyes to a birthing chamber.
EXITSthe door: testing_chamber_0
OBJECTSthe rock: rock_singularity
testing_chamber_0This is a small white room. There is a console.
EXITSthe door: testing_chamber_1
OBJECTSthe rock: rock_singularityconsole: testing_console_0
Friday, July 20, 12
![Page 52: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/52.jpg)
locations.txtawakeningYou are cold. You shake. You cannot breathe. The liquid around you drainsaway and you open your eyes to a birthing chamber.
EXITSthe door: testing_chamber_0
OBJECTSthe rock: rock_singularity
testing_chamber_0This is a small white room. There is a console.
EXITSthe door: testing_chamber_1
OBJECTSthe rock: rock_singularityconsole: testing_console_0
Friday, July 20, 12
![Page 53: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/53.jpg)
where it’s at
objects.txtsimilar to locations but for objects
also naive but allows extensibility
Friday, July 20, 12
![Page 54: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/54.jpg)
objects.txt
rock_singularityThis rock seems to exist in all locations.
TRIGGERS:not used: not used
testing_console_0: zombie.objects.console.GithubConsoleThis is the first test console. Try use-ing it.
TRIGGERS:not used: not used
Friday, July 20, 12
![Page 55: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/55.jpg)
objects.txt
rock_singularityThis rock seems to exist in all locations.
TRIGGERS:not used: not used
testing_console_0: zombie.objects.console.GithubConsoleThis is the first test console. Try use-ing it.
TRIGGERS:not used: not used
Friday, July 20, 12
![Page 56: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/56.jpg)
objects.txt
rock_singularityThis rock seems to exist in all locations.
TRIGGERS:not used: not used
testing_console_0: zombie.objects.console.GithubConsoleThis is the first test console. Try use-ing it.
TRIGGERS:not used: not used
Friday, July 20, 12
![Page 57: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/57.jpg)
zombie.objects.console.GithubConsole
class GithubConsole(Console): def cmd_use(self, ctx): """Tell the user what to do.""" session = self.sessions.get(ctx.caller_id, {'tick': 0}) if session['tick'] == 0: ctx.reply({'message': self.message_0.strip()})
def cmd_show(self, ctx, data): """Do something cool using the github api.""" if 'token' in data: github_login = gh.get_identity(data['token']) item = {'id': uuid.uuid4().hex, 'description': 'A github identity card for %s' % github_login, 'github_login': github_login} item_s = json.dumps(item) signer_id, sig = ctx._sign(item_s) ctx.reply({'item': [item_s, signer_id, sig]})
Friday, July 20, 12
![Page 58: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/58.jpg)
zombie.objects.console.GithubConsole
class GithubConsole(Console): def cmd_use(self, ctx): """Tell the user what to do.""" session = self.sessions.get(ctx.caller_id, {'tick': 0}) if session['tick'] == 0: ctx.reply({'message': self.message_0.strip()})
def cmd_show(self, ctx, data): """Do something cool using the github api.""" if 'token' in data: github_login = gh.get_identity(data['token']) item = {'id': uuid.uuid4().hex, 'description': 'A github identity card for %s' % github_login, 'github_login': github_login} item_s = json.dumps(item) signer_id, sig = ctx._sign(item_s) ctx.reply({'item': [item_s, signer_id, sig]})
Friday, July 20, 12
![Page 59: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/59.jpg)
zombie.objects.console.GithubConsole
class GithubConsole(Console): def cmd_use(self, ctx): """Tell the user what to do.""" session = self.sessions.get(ctx.caller_id, {'tick': 0}) if session['tick'] == 0: ctx.reply({'message': self.message_0.strip()})
def cmd_show(self, ctx, data): """Do something cool using the github api.""" if 'token' in data: github_login = gh.get_identity(data['token']) item = {'id': uuid.uuid4().hex, 'description': 'A github identity card for %s' % github_login, 'github_login': github_login} item_s = json.dumps(item) signer_id, sig = ctx._sign(item_s) ctx.reply({'item': [item_s, signer_id, sig]})
Friday, July 20, 12
![Page 60: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/60.jpg)
zombie.objects.console.GithubConsole
class GithubConsole(Console): def cmd_use(self, ctx): """Tell the user what to do.""" session = self.sessions.get(ctx.caller_id, {'tick': 0}) if session['tick'] == 0: ctx.reply({'message': self.message_0.strip()})
def cmd_show(self, ctx, data): """Do something cool using the github api.""" if 'token' in data: github_login = gh.get_identity(data['token']) item = {'id': uuid.uuid4().hex, 'description': 'A github identity card for %s' % github_login, 'github_login': github_login} item_s = json.dumps(item) signer_id, sig = ctx._sign(item_s) ctx.reply({'item': [item_s, signer_id, sig]})
Friday, July 20, 12
![Page 61: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/61.jpg)
zombie.objects.console.GithubConsole
class GithubConsole(Console): def cmd_use(self, ctx): """Tell the user what to do.""" session = self.sessions.get(ctx.caller_id, {'tick': 0}) if session['tick'] == 0: ctx.reply({'message': self.message_0.strip()})
def cmd_show(self, ctx, data): """Do something cool using the github api.""" if 'token' in data: github_login = gh.get_identity(data['token']) item = {'id': uuid.uuid4().hex, 'description': 'A github identity card for %s' % github_login, 'github_login': github_login} item_s = json.dumps(item) signer_id, sig = ctx._sign(item_s) ctx.reply({'item': [item_s, signer_id, sig]})
Friday, July 20, 12
![Page 62: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/62.jpg)
zombie.objects.console.GithubConsole
class GithubConsole(Console): def cmd_use(self, ctx): """Tell the user what to do.""" session = self.sessions.get(ctx.caller_id, {'tick': 0}) if session['tick'] == 0: ctx.reply({'message': self.message_0.strip()})
def cmd_show(self, ctx, data): """Do something cool using the github api.""" if 'token' in data: github_login = gh.get_identity(data['token']) item = {'id': uuid.uuid4().hex, 'description': 'A github identity card for %s' % github_login, 'github_login': github_login} item_s = json.dumps(item) signer_id, sig = ctx._sign(item_s) ctx.reply({'item': [item_s, signer_id, sig]})
Friday, July 20, 12
![Page 63: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/63.jpg)
where it’s at
devserverDEBUG:zombie.net:World:foo:SERVE tcp://127.0.0.1:2222DEBUG:zombie.net:Location:awakening:SERVE tcp://127.0.0.1:54632DEBUG:zombie.net:Location:awakening:CONNECT tcp://127.0.0.1:2222DEBUG:zombie.net:Client:rock_singularity:CONNECT tcp://127.0.0.1:54632
spawns everything in one process
yay eventlet
Friday, July 20, 12
![Page 64: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/64.jpg)
where it’s at
devserverDEBUG:zombie.net:World:foo:SERVE tcp://127.0.0.1:2222DEBUG:zombie.net:Location:awakening:SERVE tcp://127.0.0.1:54632DEBUG:zombie.net:Location:awakening:CONNECT tcp://127.0.0.1:2222DEBUG:zombie.net:Client:rock_singularity:CONNECT tcp://127.0.0.1:54632
Friday, July 20, 12
![Page 65: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/65.jpg)
where it’s at
devserverDEBUG:zombie.net:World:foo:SERVE tcp://127.0.0.1:2222DEBUG:zombie.net:Location:awakening:SERVE tcp://127.0.0.1:54632DEBUG:zombie.net:Location:awakening:CONNECT tcp://127.0.0.1:2222DEBUG:zombie.net:Client:rock_singularity:CONNECT tcp://127.0.0.1:54632
Friday, July 20, 12
![Page 66: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/66.jpg)
where it’s at
devserverDEBUG:zombie.net:World:foo:SERVE tcp://127.0.0.1:2222DEBUG:zombie.net:Location:awakening:SERVE tcp://127.0.0.1:54632DEBUG:zombie.net:Location:awakening:CONNECT tcp://127.0.0.1:2222DEBUG:zombie.net:Client:rock_singularity:CONNECT tcp://127.0.0.1:54632
Friday, July 20, 12
![Page 67: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/67.jpg)
where it’s at
devserverDEBUG:zombie.net:World:foo:SERVE tcp://127.0.0.1:2222DEBUG:zombie.net:Location:awakening:SERVE tcp://127.0.0.1:54632DEBUG:zombie.net:Location:awakening:CONNECT tcp://127.0.0.1:2222DEBUG:zombie.net:Client:rock_singularity:CONNECT tcp://127.0.0.1:54632
Friday, July 20, 12
![Page 68: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/68.jpg)
where it’s at
devserverDEBUG:zombie.net:World:foo:SERVE tcp://127.0.0.1:2222DEBUG:zombie.net:Location:awakening:SERVE tcp://127.0.0.1:54632DEBUG:zombie.net:Location:awakening:CONNECT tcp://127.0.0.1:2222DEBUG:zombie.net:Client:rock_singularity:CONNECT tcp://127.0.0.1:54632
Friday, July 20, 12
![Page 69: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/69.jpg)
where it’s at
devserverDEBUG:zombie.net:World:foo:SERVE tcp://127.0.0.1:2222DEBUG:zombie.net:Location:awakening:SERVE tcp://127.0.0.1:54632DEBUG:zombie.net:Location:awakening:CONNECT tcp://127.0.0.1:2222DEBUG:zombie.net:Client:rock_singularity:CONNECT tcp://127.0.0.1:54632
Friday, July 20, 12
![Page 70: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/70.jpg)
where it’s at
devclient
Friday, July 20, 12
![Page 71: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/71.jpg)
zombie_devclient.py ===================================================================== You are now in an interactive python shell.
You've got couple common functions already floating around in here:
look(<object name or player id>) move(<exit name>) proxy(<object name>) show(<object name>, <data>) store(<custom name>, <item>) use(<object name>) ===================================================================== -> darkthorn entered the room.This is a small white room. There is a console.
Exits: the door<zombie.client.LocationClient object at 0x10d5e4c10>
>>> _<zombie.client.LocationClient object at 0x10d5e4c10>>>> tool.gh.get_token('termie', 'XXXXXX'){'token': u'XXXXXX'}>>> show('console', _){u'item': [u'{"github_login": "termie", "id": "32aea29e38d540f5b298f3cfa7685c54", "description": "A github identity card for termie"}', u'testing_console_0', u'signature']}>>> store('github_id', _)>>> items()[('github_id', {u'item': [u'{"github_login": "termie", "id": "32aea29e38d540f5b298f3cfa7685c54", "description": "A github identity card for termie"}', u'testing_console_0', u'signature']})]>>>
Friday, July 20, 12
![Page 72: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/72.jpg)
zombie_devclient.py ===================================================================== You are now in an interactive python shell.
You've got couple common functions already floating around in here:
look(<object name or player id>) move(<exit name>) proxy(<object name>) show(<object name>, <data>) store(<custom name>, <item>) use(<object name>) ===================================================================== -> darkthorn entered the room.This is a small white room. There is a console.
Exits: the door<zombie.client.LocationClient object at 0x10d5e4c10>
>>> _<zombie.client.LocationClient object at 0x10d5e4c10>>>> tool.gh.get_token('termie', 'XXXXXX'){'token': u'XXXXXX'}>>> show('console', _){u'item': [u'{"github_login": "termie", "id": "32aea29e38d540f5b298f3cfa7685c54", "description": "A github identity card for termie"}', u'testing_console_0', u'signature']}>>> store('github_id', _)>>> items()[('github_id', {u'item': [u'{"github_login": "termie", "id": "32aea29e38d540f5b298f3cfa7685c54", "description": "A github identity card for termie"}', u'testing_console_0', u'signature']})]>>>
Friday, July 20, 12
![Page 73: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/73.jpg)
zombie_devclient.py ===================================================================== You are now in an interactive python shell.
You've got couple common functions already floating around in here:
look(<object name or player id>) move(<exit name>) proxy(<object name>) show(<object name>, <data>) store(<custom name>, <item>) use(<object name>) ===================================================================== -> darkthorn entered the room.This is a small white room. There is a console.
Exits: the door<zombie.client.LocationClient object at 0x10d5e4c10>
>>> _<zombie.client.LocationClient object at 0x10d5e4c10>>>> tool.gh.get_token('termie', 'XXXXXX'){'token': u'XXXXXX'}>>> show('console', _){u'item': [u'{"github_login": "termie", "id": "32aea29e38d540f5b298f3cfa7685c54", "description": "A github identity card for termie"}', u'testing_console_0', u'signature']}>>> store('github_id', _)>>> items()[('github_id', {u'item': [u'{"github_login": "termie", "id": "32aea29e38d540f5b298f3cfa7685c54", "description": "A github identity card for termie"}', u'testing_console_0', u'signature']})]>>>
Friday, July 20, 12
![Page 74: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/74.jpg)
zombie_devclient.py ===================================================================== You are now in an interactive python shell.
You've got couple common functions already floating around in here:
look(<object name or player id>) move(<exit name>) proxy(<object name>) show(<object name>, <data>) store(<custom name>, <item>) use(<object name>) ===================================================================== -> darkthorn entered the room.This is a small white room. There is a console.
Exits: the door<zombie.client.LocationClient object at 0x10d5e4c10>
>>> _<zombie.client.LocationClient object at 0x10d5e4c10>>>> tool.gh.get_token('termie', 'XXXXXX'){'token': u'XXXXXX'}>>> show('console', _){u'item': [u'{"github_login": "termie", "id": "32aea29e38d540f5b298f3cfa7685c54", "description": "A github identity card for termie"}', u'testing_console_0', u'signature']}>>> store('github_id', _)>>> items()[('github_id', {u'item': [u'{"github_login": "termie", "id": "32aea29e38d540f5b298f3cfa7685c54", "description": "A github identity card for termie"}', u'testing_console_0', u'signature']})]>>>
Friday, July 20, 12
![Page 75: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/75.jpg)
zombie_devclient.py ===================================================================== You are now in an interactive python shell.
You've got couple common functions already floating around in here:
look(<object name or player id>) move(<exit name>) proxy(<object name>) show(<object name>, <data>) store(<custom name>, <item>) use(<object name>) ===================================================================== -> darkthorn entered the room.This is a small white room. There is a console.
Exits: the door<zombie.client.LocationClient object at 0x10d5e4c10>
>>> _<zombie.client.LocationClient object at 0x10d5e4c10>>>> tool.gh.get_token('termie', 'XXXXXX'){'token': u'XXXXXX'}>>> show('console', _){u'item': [u'{"github_login": "termie", "id": "32aea29e38d540f5b298f3cfa7685c54", "description": "A github identity card for termie"}', u'testing_console_0', u'signature']}>>> store('github_id', _)>>> items()[('github_id', {u'item': [u'{"github_login": "termie", "id": "32aea29e38d540f5b298f3cfa7685c54", "description": "A github identity card for termie"}', u'testing_console_0', u'signature']})]>>>
Friday, July 20, 12
![Page 76: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/76.jpg)
zombie_devclient.py ===================================================================== You are now in an interactive python shell.
You've got couple common functions already floating around in here:
look(<object name or player id>) move(<exit name>) proxy(<object name>) show(<object name>, <data>) store(<custom name>, <item>) use(<object name>) ===================================================================== -> darkthorn entered the room.This is a small white room. There is a console.
Exits: the door<zombie.client.LocationClient object at 0x10d5e4c10>
>>> _<zombie.client.LocationClient object at 0x10d5e4c10>>>> tool.gh.get_token('termie', 'XXXXXX'){'token': u'XXXXXX'}>>> show('console', _){u'item': [u'{"github_login": "termie", "id": "32aea29e38d540f5b298f3cfa7685c54", "description": "A github identity card for termie"}', u'testing_console_0', u'signature']}>>> store('github_id', _)>>> items()[('github_id', {u'item': [u'{"github_login": "termie", "id": "32aea29e38d540f5b298f3cfa7685c54", "description": "A github identity card for termie"}', u'testing_console_0', u'signature']})]>>>
Friday, July 20, 12
![Page 77: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/77.jpg)
zombie_devclient.py ===================================================================== You are now in an interactive python shell.
You've got couple common functions already floating around in here:
look(<object name or player id>) move(<exit name>) proxy(<object name>) show(<object name>, <data>) store(<custom name>, <item>) use(<object name>) ===================================================================== -> darkthorn entered the room.This is a small white room. There is a console.
Exits: the door<zombie.client.LocationClient object at 0x10d5e4c10>
>>> _<zombie.client.LocationClient object at 0x10d5e4c10>>>> tool.gh.get_token('termie', 'XXXXXX'){'token': u'XXXXXX'}>>> show('console', _){u'item': [u'{"github_login": "termie", "id": "32aea29e38d540f5b298f3cfa7685c54", "description": "A github identity card for termie"}', u'testing_console_0', u'signature']}>>> store('github_id', _)>>> items()[('github_id', {u'item': [u'{"github_login": "termie", "id": "32aea29e38d540f5b298f3cfa7685c54", "description": "A github identity card for termie"}', u'testing_console_0', u'signature']})]>>>
Friday, July 20, 12
![Page 78: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/78.jpg)
zombie_devclient.py ===================================================================== You are now in an interactive python shell.
You've got couple common functions already floating around in here:
look(<object name or player id>) move(<exit name>) proxy(<object name>) show(<object name>, <data>) store(<custom name>, <item>) use(<object name>) ===================================================================== -> darkthorn entered the room.This is a small white room. There is a console.
Exits: the door<zombie.client.LocationClient object at 0x10d5e4c10>
>>> _<zombie.client.LocationClient object at 0x10d5e4c10>>>> tool.gh.get_token('termie', 'XXXXXX'){'token': u'XXXXXX'}>>> show('console', _){u'item': [u'{"github_login": "termie", "id": "32aea29e38d540f5b298f3cfa7685c54", "description": "A github identity card for termie"}', u'testing_console_0', u'signature']}>>> store('github_id', _)>>> items()[('github_id', {u'item': [u'{"github_login": "termie", "id": "32aea29e38d540f5b298f3cfa7685c54", "description": "A github identity card for termie"}', u'testing_console_0', u'signature']})]>>>
Friday, July 20, 12
![Page 79: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/79.jpg)
demo?
Friday, July 20, 12
![Page 80: Building a Modern MUD - O'Reilly Mediaassets.en.oreilly.com/1/event/80/Building a Modern MUD Presentation... · Building a Modern MUD ... Why? working on games always seemed like](https://reader035.fdocuments.in/reader035/viewer/2022081517/5ad3b02b7f8b9a0f198dfac6/html5/thumbnails/80.jpg)
thankscode at: http://github.com/termie/zombie
me at: @termiehttp://term.ie
Friday, July 20, 12