Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Building Games for Fun, Feedback and F... learning

Building Games for Fun, Feedback and F... learning

First round of presentation slides I did about using games as an educational tool to learn aspects of programming, from getting started, to learning a new language, to playing with new features.

csaunders

May 27, 2014
Tweet

More Decks by csaunders

Other Decks in Education

Transcript

  1. I want to Learn to Program in X Often we’ll

    come to a point where we are looking to learn new stuff. Perhaps it’s learning programming for the first time, or maybe you’re looking to try a new language that you’ve heard about but don’t know much about.
  2. Ruby Python Go Lua So you go and look at

    the languages that are available and try to figure out which one looks cool, or if you’ve never programmed before go with a suggestion from a friend or colleague.
  3. Ruby on Rails / Sinatra / IPA Django / Flask

    / Witbier Revel / Martini / Stout Nginx / Lapis / Lager Depending on who you ask you can sometimes get overwhelmed with the options. Sometimes on top of that these tools can be a learning experience on their own.
  4. So maybe you’ve picked one, and if it’s a language

    you aren’t familiar with such as new to programming completely or a new paradigm. You’re doing things but often it feels like magic. Magic is pretty cool, but when you’re getting started with something it can sometimes drag you down and maybe even make you feel kinda dumb.
  5. CRUD getting you down? Or what if you’ve been building

    web apps for a while. You’re building another web app in a new framework. Sometimes there’ll be a reason to do something, but often it’s the same old “create this, then that, then some other thing”. Depending on how into it you are, it might start to feel mundane.
  6. Are bugs Fun? Funny? What about the bugs you are

    experiencing. All software is going to have bugs in it, and most often when it’s web apps it’s some kind of invalid state or data being passed around via requests. Nothing super crazy stands out.
  7. Do I understand why this bug happened? This comes back

    to magic. When you experienced that bug, why did it happen? Can you explain it or are you super frustrated because your code looks exactly like that tutorial you’ve been following?
  8. Building Games So let’s take another approach to learning new

    software or how to program in general. Normally when we are learning the stuff we build is going to suck. That’s cool! It’s part of the learning process. Another lovely thing about making a game is that it’s completely self-contained. You rarely need to worry about anything as complex as a web app.
  9. Sandbox If you’re building a “regular game” they are generally

    contained to the sandbox that they are launched in. Starting and stopping the game typically won’t have an effect on the next launch of the game.
  10. Safe Environment Games also give you a safe environment to

    try things out and see the results. You can take the most boring game idea and try weird things to see how the mechanics of the game are affected.
  11. Fun And finally making a game is simply a fun

    process. Your feedback loops are very short and you get to immediately see the results of your work. Sometimes the results are goofy or exactly what you expected, but the feedback is there in front of you bouncing around or whatever it may be.
  12. Setting a Goal A big part of making a game

    is setting a goal as to what you want to get out of it. The goals don’t need to be anything intense, but it just needs to be something that helps keep you moving forward.
  13. Learn to Program Of course the simplest could be to

    just learn to program. Figure out what you’d consider to be “having met the knowing to program goal”. This is a tricky goal though because knowing how to program is pretty broad description. Try to ask yourself and perhaps a peer or mentor what you think would be parts of knowing how to program and see if you can get there.
  14. Build a Game Maybe you’re just looking for another kind

    of project that is outside of your normal scope or you’ve had an idea you want to try out. Simply building a game because you want to is definitely a goal. Figure out what would game you want to make and start building it.
  15. A Creative Outlet Or perhaps you’re looking to get into

    doing some digital art or want to use games as a form of interactive art that you want to share with people.
  16. Learn a Language Feature Finally, it could simply be a

    way to learn about the way a language does something. For example maybe you’re interested in learning how to use channels in go and want to make a game whose main pipeline is driven through channels instead.
  17. Getting Feedback One nice thing about games is getting feedback

    happens pretty much immediately. If there’s a bug in your game you typically don’t need to do much to uncover it. And if you’re not going too abstract or out there on it, you can typically hand a game to a friend and see how they interact with it or what bugs they uncover. The barrier to entry for a user is much lower.
  18. Edge Cases Show Themselves As stated earlier, the edge cases

    will become glaringly apparent when you start playing with it. If your math is off or you aren’t safe with your pointers you’ll know about it in no time. Throw in someone who doesn’t know the code and you’ll uncover it even faster!
  19. Hilarious Bugs Generally the bugs are pretty hilarious. If you

    aren’t throwing any exceptions or accessing null pointers, then you’ve most likely got awesome bugs.
  20. For example, let’s say you’re building a pong clone and

    while you were building out your world forgot to set something as a static element.
  21. Getting Started So cool. You want to get started in

    making games right? Well where exactly do you go? What kinds of tools are out there?
  22. Picking a Framework Typically you don’t want to build a

    game right from scratch. That’s brutal and a lot of that stuff is somewhat unrelated to making the actual game.
  23. gosu + chingu pygame löve2d Now there are some really

    advanced game making tools out there but I’ve found they often contain a lot of things that somewhat get in the way of focusing on the code. A few libraries that are great for learning a language and provide a very basic API for things such as Images/Sprites, Input, Audio and so on are listed here (Red/Top - ruby, Middle/Fuschia - python, bottom/blue - lua)
  24. No Framework at All! Or let’s say you want to

    be hardcore and don’t want to bother with a framework.
  25. curses termbox SDL* If you want to build a terminal

    game you can interface with the Curses API or use the cross-platform term box. If you want something a bit heftier you can use SDL. And some of you might think that yeah sure, SDL is a framework, it sort of is but it’s pretty rudimentary compared to some of the other options which provide lovely wrappers on top of it.
  26. Learn the Basics Now that you’ve chosen what library you

    want to focus on. Practice with some basics. Get the window drawing, throw on some text, maybe handle some keyboard input and draw some sprites or images.
  27. Build a Clone Once you have a basic grasp on

    the API start focusing on making a really simple clone. The easiest is of course pong, though there’s also some others that are pretty straight forward such as breakout, tetris or hunt the wumpus
  28. Put some Fire Under your Ass Once you're feeling a

    little confident find some ways to put a bit of fire under your ass. How much can you get under pressure or with a tight deadline. Can you kill scope, do you know when something sucks and something is good? ! Thankfully there’s tons of ways to get involved in this.
  29. Ludum Dare Ludum Dare is an indie game building competition

    where you have 48 hours to build a game on your own, from scratch. The biggest challenge is coming up with something that you can totally do within the 48 hours. It’s really tricky when your artistic skills are somewhat limited. Art is hard, and time consuming! And remember simplest is always best.
  30. Global Game Jam If you can grab some friends, then

    doing a Game Jam is totally something to check out. If you’re lucky you’ll be somewhere with a bunch of other jammers and get to see their creations grow at the same time. Having a team definitely helps spread the load, and everyone there is super pumped to just make games and have fun.
  31. TOJam A somewhat local event is TO Jam which happens

    every year around April. This is a Toronto specific game jam, and is pretty awesome. Again the community is super fun and helpful!
  32. Sharing is Caring Finally, show off what you are doing.

    Maybe your game looks super cheesy or isn’t even done yet. But it’s always fun to share what you’re building and talk about the problems you’re having. Write blog posts, share code, and ask questions.