So you want to make a game like Pokemon? You could grab Unity or Unreal and start hacking away — but that’s for wimps. Real programmers don’t even bother with compilers. Or development environments like Visual Studio. Nope, if you want to be a hardcore coder, it’s Notepad and batch files for you!
This, of course, is insane advice. That didn’t stop Reddit user “JiskaandStyk” though.
JiskaandStyk’s “Openpoke” is a 8100-line batch file and uncompressed, comes in at a healthy 213.62KB — about a fifth of a megabyte. To run it, just save it from Pastebin, give it the extension “.bat” and double-click. You should see something similar to the lead image.
Playing the game is done entirely using written commands, so it’s a little more laborious than your typical Pokemon title, but it does work.
So, what is a batch file? In simple terms, it’s a series of plain-text commands that are executed one after the other, with basic support for standard programming control statements such as for loops and goto commands.
It’s not the easiest “language” to code in and as JiskaandStyk points out in his Reddit thread on the project, a lack of support for floating point numbers (anything with a decimal place, basically), made the project all the more harder.
Here’s the creator’s full description of his project (and justification for embarking on it in the first place):
…this is essentially the battle system from pokemon (FIGHT/BAG/POKEMON/RUN) in batch. Choose the poke in your party, their moves, and their levels, and then participate in some good old animal fights. Has the first three generations of pokemon and all the moves minus about fifteen from generation one ( http://pokemondb.net/move/generation/1 ). All pokemon have base stats/evs/ivs, and all numbers (health, damage, etc.) are calculated using gamefreak’s mechanics. (Also you need VB to run this, since batch is shit and can’t store decimals OR fractions.
I got a bit bored over the holidays and started making this. I originally didn’t mean to go this far, but at this point I’m a bit burnt out. Hope someone at least gets a kick of nostalgia from it.
Comments
9 responses to “This Is Pokemon, In A Single File Coded Entirely In Batch”
Impressive but its got nothing on Chris Saywer. He coded roller coaster tycoon in assembly. And if anyone has ever used assembly you’d understand just how impressive that is (it’s essentially talking directly to the cpu).
How about Space Invaders, programmed in physical hardware circuitry 😛
This was *exactly* what I was going to say. Writing even this little pokemon program in assembly would have been 100 times harder. And CS made a whole game that way (and it was amazing as a game).
This is still impressive, but not because it’s “hardcore” (or maybe that should be hardcode). They used a crappy language for a program you typically wouldn’t code in it. And that’s about it.
That’s the point, I think. If you did it in assembly, it might be hard, but you would at least end up with fairly elegant code at least. In batch… yeah, good luck with that.
I’ve done ASM programming before. It isn’t hard, it’s just tedious. It also has terrible portability and future-proofing. Don’t get me wrong, I like Sawyer and his games, but his decision to use assembly on a game in the late 90s was eccentric more than it was skillful.
I agree, assembly isn’t all that difficult to write in, but is a bitch to maintain.
Yer, its not overly difficult but incredibly cumbersome when compared to c++ to do basic things. It did have huge advantages tho and you could argue that roller coaster tycoon might not have been as good without them – this game ran incredibly well when compared to others titles. Quake was another game that had components written in assembly for optimization and performance reasons.
Back in the day (1981, I think?) I was a self taught programmer – learning Apple II BASIC from a subscription to “Compute!” magazine and a couple of books I had obtained. I bought another book on machine programming for the Motorola 6502 processor (the processor in the Apple). Unfortunately we didn’t own a computer (the Apple II’s were around AUS$2,500 back then which is roughly equivalent to $9,500 today!) so I was doing it all on one of the two available to students in my lunch break. Obviously that’s not a lot of time to write, debug and test something as un-intuitive as assembly language. Additionally, being a high-school student with very little funds, living in a small coastal town prior to the internet, I had no access to any compilers or programming aids. Apple IIs had Apple Basic and a rudimentary disassembler. This meant almost all of the code was first written on paper in Assembly then converted to hexadecimal machine code by hand which was then converted to decimal (again by hand) so they could be ‘poked’ into memory. These pages and pages (and pages) of numbers were then brought to school and typed into the computer over a series of days.
My teacher called me a freak – back then I took it as a compliment – fortunately – however, these days, if I didn’t still have all of those pages covered with numbers as evidence even I wouldn’t believe I had ever done it. Oh how I wish I still had that much passion and the time to pursue it!
I can’t wait to troll my brother with this.
“Hey, bro. I got you a new Pokemon game. Come have a look.”