Welcome!
Let's build Pokemon Games together!
First off, my name is Mike and I'm a Senior Fullstack Engineering Manager at a Fintech company, and I like building Pokemon Games. It's how I've learned to program, and owe much of my success to the late nights spent cranking out code, throwing it out, and starting again.
If you have any questions, suggestions, comments, or see ways I can improve, please reach out to me! I'm on HackerNews as mikercampbell
, and would like to hear from you!
In the course of this tutorial, we're going to be building components of Pokemon Games! I say components because you don't need to build all of the tutorials to have successfully built a Pokemon Game. This is the way that I learned programming, and whenever I come across a new piece of tech, a new language, framework, ORM, RPC, paradigm, or Design Pattern, I build something from Pokemon. Once you've cracked the "what" of the problem (I've done a ton of research into the mechanics, and so I have a feel of what needs to be done), I can focus on the "how" of completing it in something entirely unfamiliar to me.
My mentor at my last job said "Never solve a problem and learn a new technology at the same time. Either take a problem you've already solved, try it with the new technology, or solve a new problem in a well-known technology." For those of you who are new to building Pokemon games, we'll learn a bit about both at the beginning, but my hope is that you can take these lessons and apply them in directions I haven't imagined yet, learning a new technology with a "problem" you've already solved - building Pokemon Games.
What will we build?
When building anything, especially a game, and in our case, a Pokemon game, it can be as vast, complex, simple, minimalistic, real-time, distributed, scalable, etc., as you want it to be. Want to just build a turn-based battle engine in the terminal? Great! That's a Pokemon Game. Want to build an Overworld (that top-down perspective where your character walks around) and call it good? Great! You've built a Pokemon Game! Want to recreate every single mechanic from the Gen III games, have multiturn battle moves and things like semi-vulnerability (like Dig or Dive), and make a full-blown MMORPG? Great! You've built a Pokemon Game!
I'll be tackling the whole of Pokemon games piece by piece, showing you where to collect information on how to learn the mechanics, I'll even show you other people's research into the original format of the Game Boy Color ROMs (the game file on the cartridge that you played), and show you were to get opensource resources for images, tile sheets, sprites, and all the data scraped right from the games!
We're going to build a Real-time, fully scalable (with caching, databases, a UI, and a few microservices), and deployable Pokemon Game. But most importantly, I'll be giving you the tools to build the game however you like, as I cover the building blocks of Pokemon and where to find out how to do things if and when you branch off.
I'm not going to be using tools like Unity or Unreal Engine, rather I'll be using tools that are applicable in the broader range of Software Development - things that you might use at a professional software development job, such as Redis, Postgres, Websockets, REST API's, GraphQL, etc.
If you want to go start to finish and create a wholistic game, follow along in the Main Quests, as they'll leave you with a complete, interactive, Pokemon Game you can build out from start to finish! Want to explore new tech with me and get lost in the details of different languages and frameworks? Then follow along with the Side Quests that grab your attention!
Goals
I'll be teaching in Node.js primarily, but want to branch out and do some modules in Elixir, Go, and maybe Rust - but I'm not here to teach you Node.js. Although we'll go through the basics of Node.js, this is more about learning how to make Pokemon Games so that when you're tasked with learning Haskell, V, Blitz.js, Svelte, or any other ecosystem, you'll know how to build a game in that language, learning the nuts and bolts as you go along.
Wait, before I begin, I gotta do the legalese. I'm not affiliated with Pokemon, GameFreak, Nintendo, or any other game company. I've never been a professional game developer for that matter. All the Intellectual Property, logos, names, and copyrighted material is the sole property of Nintendo, and I'm abiding by the "Fair Use" of copyrighted material because it is used for educational purposes.
Fair use allows limited use of copyrighted material without permission from the copyright holder for purposes such as criticism, parody, news reporting, research and scholarship, and teaching. - Baylor University
Okie doke, now let's begin.
Last updated