+;;; The game master! Runs the world.
+;;; =================================
+
+;; @@: We could call this a "world builder" instead...
+;; I kinda like calling it a GM though.
+
+(define (gm-init-world gm message)
+ ;; Load database
+ ;; TODO
+
+ ;; Init basic rooms / structure
+ ;; TODO
+
+ ;; Restore database-based actors
+ ;; TODO
+
+ ;; Set up the network
+ (gm-setup-network gm))
+
+(define (gm-setup-network gm)
+ ;; Create a default network manager if none available
+ (set! (gm-network-manager gm)
+ (create-actor* gm <network-manager> "netman"
+ #:send-input-to (actor-id gm)))
+
+ ;; TODO: Add host and port options
+ (<-wait gm (gm-network-manager gm) 'start-listening))
+
+(define (gm-handle-client-input actor message)
+ "Handle input from a client."
+ (define client-id (message-ref message 'client))
+ (define input (message-ref message 'data))
+ (format #t "From ~s: ~s\n" client-id input)
+ (<- actor (gm-network-manager actor) 'send-to-client
+ #:client client-id
+ #:data "Thanks, we got it!\n"))
+