In the long-forgotten past of 2017, a challenged was proposed to me. Several of my friends and I would create our own version of the game BattleShip in different languages, each with their own AI, and we would make them play each other. My one friend was to do his in OCaml, the other was to do his in Tcl, and I would do mine in Rust.
I was the only one to put any work into the task. F*** me, right?
So, 2 years later, this project is just collecting dust. So why not throw it out onto the internet for the whole world to see?
Maybe, some day, I’ll update this post with more information. For now, enjoy.
Update, 4/5/2019: Well, butter my bread and call me Sally, turns out one of my coworkers did actually work on his a bit! If anyone wants (or cares) to see what his implementation looks like in OCaml, click here to go to his GitHub (and criticize him heavily).
I’ve been very busy lately. I know I don’t post often enough, but I’m working on changing that up. And, for starters, I’ve posted a brand new tutorial! Been a few years since I’ve done that, right?
Well, for you AI newbies, I’ve posted a tutorial for a Finite State Machine I made a few years ago, affectionately called the Super Simple State Machine. I even posted the code and a Unity package demo project up on my GitHub for you. Isn’t that nice?
Give the tutorial a look-see, let me know if you like what you see and you want more.
That sounded really dirty… Sorry about that. Later!
I know I don’t post very often – believe me, 2015 and 2016 have been a helluva ride – but I have been writing a lot of code. I mean, a lot. A lot of the code I write, since it’s Unity, I have compartmentalized in scripts that I import over to a multitude of projects. Seeing as how a lot of these are used and fleshed out in projects that will never see the light of day, I thought “Hey, why not just put them up on the site?”
So, I’ve created a Github account, and I’m placing them in their own GitHubGists (or Repositories, if they span multiple files). This would be a quick, dirty, and effective way to get my code out to you guys so maybe, just maybe, it can actually be used in a project somewhere.
Any code I put up in my Gist, I’ll also link to it somewhere on this site as well for direct linkage.
OK, first off: No, I’m not dead. 2: No, I’m not a zombie. 3: Yes, zombies are considered dead. 4: I’d like to take a moment to consider a pivotal part of any game programmer’s arsenal of design patterns: The Observer.
The observer pattern, to put it simply, is an object that will only perform a specific action when another object/objects (called “the subject”) are in a particular state. A gentleman by the name of Bob Nystrom is working on an online (and soon physical) book regarding game programming, called GameProgrammingPatterns.com. In his book, he describes the fundamentals and design of the Observer pattern in a fun and simple way that can have even the most basic programmer up-and-running with Observers in no time; like a strange digital voyeur of code.
OK. That was disturbing.
Anywho, go run over to his site, and check out the other “chapters” he’s done. His book is still a WIP, but it’s already a classic. Take care!
The other day, I found a post in Reddit’s /r/Unity3D to random procedural Zelda-style map generation using a binary-tree by a dude named David León, a game programmer. He goes on to explain his method for generating the maps, and even has downloads to his source code. He also has a bunch of other tutorials for creating a rougelike-style maps and so-on. Really great stuff, and if you’re looking for a little inspiration for random map generation, check out David León’s tumblr.
So, my blog’s concept is nothing new: Games, programming, tutorials, the works. But everyone’s a little different and post up different content, and recently I found this blog, by Rodrigo Monteiro, where he not only posts up tutorials, game design, and even 3D game math, but he also gives his 2 cents on games and game design ideas. It’s a real great blog, and definitely one to bookmark. Here, I have a few pages of interest for you:
OK, so a while back I posted a link for a simple implementation for A* Pathfinding for C/C++. The page gets a bunch of hits, but I get a lot of people asking me to explain it. Well, it’s not my code to really explain, and I haven’t tested it out for myself. Rather than go through and make a huge tutorial, I figured I’d take the lazy route, and provide you with a resource to help explain it a bit. This page breaks down A*Pathfinding to the basics and gives a great explanation down to even the heuristics (If you don’t know that word, you’ll need this link).
So, now with this in hand, pathfinding should be easier to grasp now. Give it another go, and let me know how it turns out! Good luck!
Update: Oct. 4th, 2018
Hey! So I stopped being so lazy, and actually wrote up a tutorial for A* Pathfinding that I call KMStar! Go ahead and check it out!