Learn Programming Through Building Pokemon Games: Route 1

1 points by mikercampbell ↗ HN
Hey! I'm Mike and I'm writing my first tutorial on how I learned how to build Pokemon Games. It's a work in progress, and I'll be posting updates here, but I'm excited to take on this challenge!

https://mikercampbell.gitbook.io/gotta-code-them-all/

Whenever I learn a new language, framework, design pattern, or technology I build a Pokemon Game in it. My goal is to use everyday technology like Node.js, Elixir, Go, Postgres, Redis, React, and others to show you how to build Pokemon Games in a way that you could apply the concepts discussed in any other technology.

The Course is broken up into Main Quests and Side Quests, where Main Quests include everything you need to build a game, where Side Quests delve into architectural and scalability, such as Caching, Graph Databases, Web Assembly, etc., and things that I'm just curious about so you can see me use these principals to learn Tech in realtime.

In the end, you will have a Real-time, playable, deployable Pokemon Game clone, with varying degrees of parody depending on what Main Quests and Side Quests you choose to work on.

I published my first Chapter (or as I call them Routes), and am looking for feedback and advice, as I've never done this before!

I've been meaning to do something like this for some time, as I would really like to get into Developer Relations, so I have the goal of getting good at this, and feedback would go a long way.

It was this thread (https://news.ycombinator.com/item?id=32093879) that inspired me to take that first step!

2 comments

[ 4.4 ms ] story [ 8.4 ms ] thread
Some tough love.

On one level I find it a fascinating project. I have a weakness for large party RPGs and I am still playing a Nintendo 3DS and thinking about how some of the touch interactions (see the boss battles from Mario and Luigi Dream Team) could be ported to phones and tablets. I am also wanting to jump into WebGL programming.

On the other hand, you're 1% done at best; if Nintendo wants to end your web site they can do it whenever they want, it would be safer to base this on your own IP.

I'm not so sure what caching, graph databases and web assembly have to do with it. Isn't that putting the cart ahead of the horse? I get the feeling that some architecture astronauts are planning a mission to Uranus.

The first Pokémon game ran on a Z80 CPU with an 8kb working memory. Certainly you can store your creature database in a JSON object in today's web browser.

I badly would like to see how you handle the UI aspects, personally I think that's very interesting. You probably were right to start with the creature database but I think the next thing you want to do is implement the battling, you've got to make up your mind about how much you want to invest in gfx and sound. The other half of the UI is the overworld in the game and all the "visual novel" aspects. It probably makes sense to use a game framework for the battling or the story elements or both.

I'm here for that tough love!

And I'm worried about the IP thing. I think I'm covered because it's educational and I'm not making money off of it, it qualifies as "Fair Use" of copyrighted material, but at a moments notice, I could swap all the data for Fakemon, which is how people have gotten "past" IP violations (like Pokemon Uranium).

And yeah! I'm glad you brought up the part about caching, graph databases and the idea of over-engineering. The idea is not to make a practical game, but to learn technology through over-engineering. The Main Quests will be a streamlined experience, but the Side Quests are where I go off the wall.

And yeah as for graphics, I've actually built it in React in a few different ways and was going to go that route. I've built some basic Rouge-like games in Rust with WebGL (using bracket-lib), and am most definitely going to have that as a Side Quest.

What I'm gathering from your feedback is that I need to work on my messaging as to what the reader can expect?

And yeah, most DEF only 1% of the way through, but since I'm still new to this, I would love feedback on pacing, clarity, whether I give too much info or not enough. I'd hate to be 100% done and have something that isn't a smooth read.

But hey! I appreciate your feedback!