Fun and Learning. In a Dungeon!

Matt Dray, March 2023
matt-dray.github.io/in-a-dungeon

tl;dr

Try project-driven learning. Have fun.

github.com/matt-dray/r.oguelike

rostrum.blog/tags/r.oguelike/

matt-dray.com

[1] Hello

Disclaimers

  • These are my thoughts
  • We’re all different
  • This is context-dependent

[2] The idea

Learning approaches

A. Module-driven

B. Project-driven

[A] Module-driven

  • Passive walkthroughs
  • Comprehension tests
  • It’s done to you

[A] Module-driven

  • Box-ticking? Badge-chasing?
  • Too generic?
  • Forgettable?

[B] Project-driven

  • Solve a small ‘problem’
  • Discrete scope
  • It’s done by you

[B] Project-driven

  • Fail meaningfully
  • Talk about it
  • Have fun

[3] Example

Goals

  1. Interact with user
  2. Detect and respond to IDE
  3. Build simple algos from scratch

Format

  • An R package
  • Openly available on GitHub
  • Narrative devlogs

A black hexagon with a green border. Text below center on the hexagon reads 'r.oguelike' in green. Above that is a 3 by 10 grid of punctuation characters in green. Far left and right edges are hashmarks and between them are periods, as well as a single 'at' symbol and dollar symbol. The pattern mimics a text-only roguelike videogame typical of the 1980s.

github.com/matt-dray/r.oguelike

rostrum.blog/tags/r.oguelike/

Output in the R terminal. The top section is a tile grid of characters laid out like an 80s videogame with text-only graphics, like Rogue. Red hashes are wall tiles Black periods are floor tiles. A green dollar sign, a yellow 'a', a pink letter 'E' and a blue 'at' symbol. Underneath is a status bar with some inventory information and instructions on how to play. The cursor is waiting on a line that says 'input'.

Goals

  1. Interact with user
  2. Detect and respond to IDE
  3. Build simple algorithms from scratch

Procgen

# # # # # # # # # # # # # # # # # # # # 
# # # # # # # # # # # # # # # # # # # # 
# # # # # # # # # # # . # # # # # # # # 
# # # # # # # # # # # # # # # # # # # # 
# # # # # # # # # . # # # # # # # # # # 
# # # # # # # # # # # # # # # # # # # # 
# # # . # # # # # # # # # # # # # # # # 
# # # # # # # # # # # # # # # # # # # # 
# # # # # # # # # # # # # # # # # # # # 
# # # # # # # # # # # # # # # # # # # # 
# # # # # # # # # # # # # # . # # # # # 
# # # # # # # # # # # # # # # # # # # # 
# # # # # # # # # # # # # # # # # # # # 
# # # # # # # # # # # # # # # # # # # # 
# # # . . . . . . . . . # # # # # # # # 
# # # . # # # # # # # . # # # # # # # # 
# # # . # # # # # . . . # # # # # # # # 
# # # . # # # # # # # # # # # # # # # # 
# # # . . . . . . . . . . . . # # # # # 
# # # # # # # # # # # # # # . # # # # # 
# # # # # # # # # # # # # # . # # # # # 
# # # # # # # # # # # # # # . # # # # # 
# # # # # # # # # # # # # # . # # # # # 
# # # # # # # # # # # # # # # # # # # # 
# # # # # # # # # # # # # # # # # # # # 
# # # # # # . # # . # # # # # # # # # # 
# # # . . . . . . . . . # # # # # # # # 
# # # . # # . # # # # . . # # # # # # # 
# # # . # # # # # . . . # # # # # # # # 
# # . . # . # # # # . # # # # # # # # # 
# # . . . . . . . . . . . . . # # # # # 
# # # # . . # # # # # # # # . # # # # # 
# # # # # # # # # # # # # . . # # # # # 
# # # # # # # # # # # # # . . # # # # # 
# # # # # # # # # # # # # # . # # # # # 
# # # # # # # # # # # # # # # # # # # # 
# # # # # # # # # # # # # # # # # # # # 
# # # # # # . # . . # # # # # # # # # # 
# # . . . . . . . . . . # # # # # # # # 
# # . . # # . # . # # . . # # # # # # # 
# # # . # # # # # . . . # # # # # # # # 
# # . . # . # # # # . # # # # # # # # # 
# # . . . . . . . . . . . . . . # # # # 
# # # . . . # # . # . # # # . # # # # # 
# # # # . # # # # # # # # . . . # # # # 
# # # # # # # # # # # # # . . # # # # # 
# # # # # # # # # # # # # # . # # # # # 
# # # # # # # # # # # # # # # # # # # # 
# # # # # # # # # # # # # # # # # # # # 
# # . # # # . # . . # # # # # # # # # # 
# . . . . . . . . . . . . # # # # # # # 
# # . . # # . # . # # . . # # # # # # # 
# # # . # # # # # . . . # # # # # # # # 
# # . . # . . # # # . # # # . . # # # # 
# # . . . . . . . . . . . . . . # # # # 
# # . . . . # . . # . # # # . # # # # # 
# # # # . # # # . # # # # . . . . # # # 
# # # # # # # # # # # # # . . . # # # # 
# # # # # # # # # # # # # # . # # # # # 
# # # # # # # # # # # # # # # # # # # # 

Pathfind

# # # # # # # 
# . . . . . # 
# . E . . . # 
# . . . . . # 
# # # # # . # 
# . . . . . # 
# . @ . . . # 
# . . . . . # 
# # # # # # # 
# # # # # # # 
# C B A 9 8 # 
# B A 9 8 7 # 
# A 9 8 7 6 # 
# # # # # 5 # 
# 2 1 2 3 4 # 
# 1 0 1 2 3 # 
# 2 1 2 3 4 # 
# # # # # # # 
# # # # # # # 
# . . . . . # 
# . . E . . # 
# . . . . . # 
# # # # # . # 
# . . . . . # 
# . @ . . . # 
# . . . . . # 
# # # # # # # 

Goals

  1. Interact with user
  2. Detect and respond to IDE
  3. Build simple algorithms from scratch

Format

  • An R package
  • Openly available on GitHub
  • Narrative devlogs

Bonus round

  1. Package maintenance
  2. Play in-browser with Binder
  3. A third dimension?!

A screenshot of a pull request in the r.oguelike GitHub repository. User trevorld added snapshot tests to the repo and matt-dray merged it.

A screenshot of an issue in the r.oguelike GitHub repository. User trickytank added a printout of an error after user input.

A screenshot of RStudio running in the browser with the package r.oguelike preinstalled.

A QR code that opens RStudio in the browser with the R package r.oguelike preinstalled.

Output in the R terminal. The top section is a tile grid of characters laid out like an 80s videogame with text-only graphics, like Rogue. Red hashes are wall tiles. Black periods are floor tiles. A green dollar sign, a yellow 'a', a pink letter 'E' and a blue 'at' symbol. Underneath is a status bar with some inventory information and instructions on how to play. The cursor is waiting on a line that says 'input'.

Project-driven?

  • Solve a small ‘problem’
  • Discrete scope
  • Fail meaningfully
  • Talk about it
  • Have fun

[4] Consider

In-gov

External

To reiterate

  • Module-driven isn’t always bad
  • Project-driven might be useful
  • Think before you default

tl;dr

Try project-driven learning. Have fun.

github.com/matt-dray/r.oguelike

rostrum.blog/tags/r.oguelike/

matt-dray.com