Skip to content

Instantly share code, notes, and snippets.

@brendanzab
Last active October 28, 2024 15:43
Show Gist options
  • Save brendanzab/3792143 to your computer and use it in GitHub Desktop.
Save brendanzab/3792143 to your computer and use it in GitHub Desktop.
World building miscellany

Key sources of inspiration:

  • M. C. Escher
  • Shaun Tan
  • Ghostpatrol
  • Nifflas (Knytt, Knytt Stories)
  • J. R. R. Toliken (Maps, history and languages of Arda)
  • Jon McNaught
  • Birchfield Close, Pebble Island, Dockwood)
  • Tom Gauld
  • Hayao Miyazaki/Studio Ghilbi
  • Dinatopia
  • The Legend of Zelda: A Link to the Past/The Wind Waker

There are many experiences I've had in Dwarf Fortress that were particularly vivid. A polar bear stalking my woodcutter, but evading my warrior across the arctic tundra. A master engraver carving the story of a dwarven child who went mad. Purple gas saturating the grave room and leaking into the halls when my dwarves were being massacred by kobolds. Good friends celebrating in the great room, drinking while admiring the mist (the fortress was built into the back of a waterfall, and mist makes dwarves happy). The clumsy blacksmith and shy carpenter who lived in their corner of the mine, happily married and rarely taking food with the other dwarves. The cats. The dragon.

oscilloscope

At its heart, the graphics pipeline is simply a configurable data-flow network. The main input of the network arrives as a stream of vertex descriptions, and additional data can be provided in various slots, which are constant during a rendering pass: uniforms of basic types and samplers (textures with some attached logic). After some processing steps, the final output is one or more raster images.

LambdaCube 3D: Motivations and background

Be curious. Read widely. Try new things. I think a lot of what people call intelligence just boils down to curiosity.

Aaron Swartz

I've mentioned this many times in this subreddit since this question comes up often (i suppose this should be added to some FAQ?): scripts should say what to do, not how to do it.

Example: to fire a rocket from the player towards a target (f.e. another entity or some general direction pointer by the mouse/controller):

  1. the game engine should provide functionality for calling script code when a key is pressed (or action is commanded, if you want to generalize this). In the rocket case assume some script code is executed when you press the Space key.

  2. the script code for the "fire rocket" action (f.e. pressing the Space key) will need to create a rocket entity, attach it a model, repeating sound effect, particle system, etc (you'll probably have some helper functions that do the gruntwork for these and your scripts will simply call something like "spawn rocket")

  3. next it'll obtain the rocket starting point and direction, set up physics motion. Finally it will attach some script code/callback for when a collision with something occurs

  4. after that the script ends and the rest is up to the engine: moving the rocket, handling collisions, spawning new particles for the particle system, playing back the repeated sounds, rendering the rocket model, handling the resource stuff (model, textures, sounds, etc), visibility, pathfinding (for a homing rocket or whatever), etc.

  5. at some point the rocket will collide with something. In that case, the script code/callback set up above will be executed. That script will do something like asking the engine to play back an explosion sound, spawn another particle system (for smoke, fire, etc), destroy the rocket entity and send a "damage" message to nearby entities (having a message system for your entities also help so that entities can send arbitrary messages to each other either by knowing about themselves, using some form of radius around a point and/or having a common area tag and id).

  6. the engine again handles the playback, sound mixing, particles, etc

Note that between #4 and #5 there is zero time spent in scripts (at least as far as the rocket is concerned).

Of course for prototyping you may want to expose more low level stuff in the scripts (f.e. check against two items colliding) but these must be removed as soon as the prototype works and be implemented in the engine side.

badsectoracula's comment on the question: "How much of a game engine should be handled by the scripting language?"

Peter Jackson's portrayal of Minas Tirith

Ah Minas Tirith, my old pet peeve … as much as I love the movie I have to say I hate the movie version of the city. First, it looks way to small to accomodate its population. Secondly, where are the surroundings? Where are the taverns and shacks of the poor that should sprawl around the city walls? Where are all the farms that should stretch around all the land surrounding the city? They were even mentioned in the book! It took the orc army several days to burn down all the farms and homesteads! Why ist there only a plane of grass? Don't they need to produce food? Where? How? This city and its surroundings look so empty and sterile :/

Phew, had to get that of my chest.

Edit: Take this plan of medieval brugge for example! You can clearly see all the land around the city cultivated

zorfmorf commenting on [Render] Minas Tirith from the Lord of the Rings

@photex
Copy link

photex commented Aug 20, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment