Skip to content

Instantly share code, notes, and snippets.

@rgbatty
Last active October 6, 2016 23:35
Show Gist options
  • Save rgbatty/651e79df53ea3efa2f5ac5c108420278 to your computer and use it in GitHub Desktop.
Save rgbatty/651e79df53ea3efa2f5ac5c108420278 to your computer and use it in GitHub Desktop.
Talk Layout for SloC
  • Introduction (Ryan)
    • Personal Introductions
    • SloC is a procedurally generated dungeon crawler, themed around a developer preparing their project for release
    • It was created as a technical challenge to push our understanding of algorithms and data structures in a brand new language
    • Technologies were native JavaScript supported with Mocha as a testing framework
  • Grid (Parker)
    • Abstraction of a traditional 2D array
    • Manages level state through individual cells
    • Replayability was a serious topic for us
    • Accomplished through managing cell state, procedurally changing values through certain semi-predictable patterns
  • Generation (Ryan)
    • Biggest issue was optimization, which was solved with low-calculation algorithms
    • This begins with Room placement, which is accomplished through randomly generated sizes and a seeded number of attempts
    • Rooms are then manually connected with a tunneling algorithm, which connects two points from seperate rooms
    • GameObjects such as enemies, keys, and teleporters were then managed via random seeding and amount
    • These values were exposed through an easily usable internal interface
  • Scaling (Parker)
    • Using the internal API, it became incredibly easy to create an infinite number of levels
    • We used a scaling value of player level in order to procedurally increase the difficulty of the game
    • While this approach worked well, we began to run into an issue with large map sizes, due to the number of redraws
  • Camera (Ryan)
    • To solve this scaling issue, we implemented a dynamic camera
    • The camera finds the player position, and then draws a certain number of valid cells surrounding the player
  • AI (Parker)
    • Our final challenge was creating real-time challenge for the player
    • We accomplished this via enemies that follow the player in real time
    • During development we discovered an unintentional feature, which was the ability for the enemies to track the user through walls and then dig to them
    • This actually resulted in an unintended improvement in game immersion, improving upon the game as whole and wrapping up the project
  • Conclusion (Ryan)
    • This project presented a number of great technical and design-based challenges
    • A number of students continue to play, challenging one another to get farther
    • Going forward we'd like to add a backend to make it easier to compete with others
    • You can find the game and it's source code at the following links
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment