Advertisement

Projects to learn things.

Started by July 22, 2015 09:23 PM
6 comments, last by MarioLuigiMan 9 years, 1 month ago

I suspect I'm not the only one, but often times when I'm trying to learn something new, it helps to have a project to act as a driver, and to establish a goal. I was wondering if others would like to share some of their "made this for the purpose of learning that" kind of projects.

For example....

- When I wanted to learn how to deal with Java's "swing" GUI system, I made a multi-window version of "Qwirkle", which is a tile-laying table top game kind of similar in flavor to dominoes. The game is super simple, but it's actually kinda a fun little thing, and is very GUI-heavy and logic-light.

- When first learning about neural networks, I made a top-down tank "game" (which in reality was more of a screen saver, since all characters were computer-controlled by default) that gave me an interesting avenue to tinker with parameters.

- When learning the windows FS driver systems, I made a C# program that allows for software-intercept of file system activity via plug-ins (which is actually still something I use). I still use a matured version of this software to do stuff like redirecting file IO writes of legacy software result files to standard in of results parsing software, without having to write to disk first.

What cool stuff have you made for the purpose of learning something?

A crude MUD that worked over Telnet ...

I actually have dozens of uncompleted "projects" I have created just for the purpose of figuring out different stuff.

I cannot remember the books I've read any more than the meals I have eaten; even so, they have made me.

~ Ralph Waldo Emerson

Advertisement

My entire Bandcamp account is my attempt at composition. I'm too embarrassed to show most of my game screenshots, so...

Whilst learning Python, Pygame, 3D modeling, keyboard input, gamepad input, animation, spritesheets, the concept of game states, etc., I ended up with this incomplete prototype lovingly titled Space Project: Quagmire. It's a 2D space shooter.

quagmire.png

I don't often have the luxury of learning things just for their own sake. Usually I find my motivators work the other way around: I need to build X, and the best way to build it is to learn Y.

I did brush off my JavaScript and learned the IRC protocol just to make a chat bot though... that's the only recent example I can think of that's remotely interesting :-)

Wielder of the Sacred Wands
[Work - ArenaNet] [Epoch Language] [Scribblings]

I don't often have the luxury of learning things just for their own sake. Usually I find my motivators work the other way around: I need to build X, and the best way to build it is to learn Y.

I did brush off my JavaScript and learned the IRC protocol just to make a chat bot though... that's the only recent example I can think of that's remotely interesting :-)

I totally know what you're talking about. If a deadline is far enough into the future, I still find though that being able to learn with a small sample project helps me improve my design approach on a larger project that needs whatever the new technology is.

Maybe it's just me, but it gives me an opportunity to get the "oh man I'm just learning this, and boy is it sloppy" trial-run out of the way on something that matters less. If deadlines are near-term though, or the project is short term, I totally agree with your approach.

I made a few small projects to learn things as part of One Game a Month a couple of years ago. They were all coded in JS except one and included:

  • A tree-growing game to learn procedural generation of tree limbs and creating a basic environment
  • A rhythm game to learn how to match in-game events to music
  • A game where you are a flea trying to m ate with other fleas on a cat's face before being detected by the cat to experiment with object pooling
  • A multiplayer prototype of a project I've wanted to make for about 10 years, where you breed and race snails. The project itself is not meant to be a game (it's a simulation) but this was a more gamey prototype using node.js. I'm now working on a full version of the simulation and have kept some aspects, like basic breeding principles.
  • A board game to learn how to make board game AI
  • A color-matching game (that was also for the js13kGames competition that year), to learn about color matching in JS. I have since written an article about what I learned on HTML5Hub.
  • A game where you have to protect a circle from oncoming squares by creating walls around it to learn how to do slightly more complex collision detection
  • A game where you control the die in an RPG (this one was created in C# using Unity) to learn more about 3D games and Unity

All of these are very experimental and rough, made in a month (sometimes less). I've put them all on my site here, some with code available on GitHub.

Advertisement

On the one hand, I think that the best way to learn something is by actively doing something with it. On the other hand, I'm quick to forget something if I haven't used it in several months. So even if I want to learn some new piece of technology, unless I think there's a strong likelihood that I'll be using it within a year, I tend not to bother with it.

This is one reason why I keep well documented code, even for small little learning projects. I've saved every program and script I've written since college (unless of course for code that I did while employed, since the employer has the rights to that work of course). I still find myself looking up things I did 10 years ago to figure out how I solved a problem that is similar to one that I am currently faced with.

Hero of Allacrost - A free, open-source 2D RPG in development.
Latest release June, 2015 - GameDev annoucement

One time I made a game called Holiday Catch. It introduced the fact that i could get things done in a short amount of time. smile.png It also taught me that publishing is complicated sometimes. I do not have a picture though. Just think of a snow flake if you click the link at the bottom. I did it kinda to learn the new android environment as well (Android Studio). you can check it out here at https://play.google.com/store/apps/details?id=com.ovenbird.christmasCatch.android

This topic is closed to new replies.

Advertisement