Personal Thoughts: #1

So I’ve announced this on the podcast with Rob, but I just wanna gush here for a minute:

I’ve been a programming a game. Nothing spectacular or anything, it’s just Go, the board game I post pictures of my son and I playing all the time on Facebook. I wanna take Go and give it some Tetris 99 aesthetics and some bonus modes, to kinda modernize it a little bit. Make it a little flashier than the base board game, which isn’t exactly action packed to begin with, since it was invented in China 4000 years ago, y’know?

I’m almost done working on the engine. Which means I’ll have a playable alpha here soon. And I’ve only been working on it on nights and weekends, an hour here, an hour there. And I’m almost done the lion’s share of the programming.

It’s weird to write code for the first time since I was 12 on BASIC. I don’t usually think too fondly of my past or anything, so it’s really refreshing. I’m finding a lot of old memories in the act of it and it’s really just nice. And I’m almost done the first major hurdle. Once I’ve wrapped this leg up, I continue my discussion with Nintendo, to get it listed on the Switch eShop. I’ve already talked to them, and I held off on my response to get the Switch’s specific dev kit, until I had a playable alpha I could show them, because I don’t have a portfolio or anything to show them my previous work with, for them to feel comfy releasing it.

And that’s cool. That’s actually why I picked this project, specifically. Nintendo actually has this weird meta-history with the game. Every fan of Nintendo has heard the story they used to sell card games, and started back in like 1895 or so. But that’s not the only thing they produced from that era of their company: they also made shogi boards, standard playing cards, a few other games knick knacks, and yeah, Go boards, too.

That’s not where it ends, either. They never stopped producing them. Right this moment, you can go on to Nintendo’s website and order a go set and get it sent to you, for around dollars, plus or minus (international) shipping and handling. I want one so freaking bad, I cannot tell you. I just want to play an ancient Chinese game on a Japanese video game company’s Go board, with my son sometime before I die, preferably enjoying a nice American pipe smoke and an imported, unpasteurized German beer. I think that’s simultaneously ridiculously corny and absolutely the coolest thing I can think of. It makes me smile every time I think about it.

One of the gentlemen who worked on bringing Tetris to the West, Hank Rogers, was an Dutch-American programmer, working for Nintendo. He got that job with them based on a specific project: he knew their at the time President, Hiroshi Yamauchi played Go. He pitched a Game of Go on the Japanese Famicom to him, and got an advance of approximately $300k to do it.

Go. Tetris. Nintendo. It’s a super interesting story and one that the Gaming Historian does a much better job of than I am of telling. It’s captivating. I just want to add to that story, just a little bit more by bringing my favorite board game, to make favorite game system, for a company whose games I’ve played all of my life, and the one that sucked me in most of all: Tetris.

It’s nice to see that I’m making progress on a project that means a lot to me, and the history of which had so much influence on my life. I’m proud of me, and I’m proud of what I’m doing.

BushiGo Dev Update 11 Oct 2019

Okay, so today’s big code update:
•Extensive code cleanup and better inter-script calls everywhere. Much easier to read means much easier to build and iterate on.
•Tweaked all four probe codes to make copypasta between them easier during iterative dev-test cycles
•Commented and formatted all of my code. More ease of iteration.
•Stones can create groups when placed next to other friendly stones
•Groups have liberties and can die, killing all children stones, at 0 liberties
•Groups no longer seppuku upon creation (a funny bug in my first try writing that)

Next items:
•Placing a stone next to an already created group will cause a terminal game crash- this due to a bad name call trying to reference the group. I know the method, don’t know syntax
•Group liberties are iffy. Probes need to subtract liberties from Groups, as well as individual Stones. If/then for grouped stone in probe functions should resolve.
•Need to turn the space(s) back on after groups die. Group code needs references to colliders (space objects), and then a foreach() should resolve.
•I need to build a bigger test board, as I prepare for scoring implementation. Wave approach won’t work due to dead stones behind enemy territory. Dumbie boards nearby for testing may also work.
•I need to switch out all instances of GetComponent<> for TryGetComponent<> for future bug-prevention. Objects can die (0 liberties) before a future line calls them, causing terminal errors, due to the nature of simultaneous running of coded objects.
•Need to implement a “Captured” variable. When stone dies, the killing player gets +1 capture. Used for game stats.

All said and done, I got a lot done today. I’m happy with it. I’ve set a loose deadline of Halloween (31 Oct) for having the engine completed, and it may end up being tight, but it’s a reasonable goal.