Mentor Interview: Octoshrimpy

Pixel artist, game developer, extremely helpful and friendly individual: Octoshrimpy. He's my best friend, he's my pal. He's my homeboy, my rotten soldier. He's my sweet cheese. My good time boy. I'm quite fond of him and I'm definitely stealing his MarkDown organizer scheme for my Obsidian vaults.

I know Shrimpy originally via his work to expand Public Domain sprite set, 16x16 Mini World (originally created by Merchant Shade) and his relentless good attitude in one of my favorite cozy discord servers, Very Epic Tavern. We are all indie hackers there and Octoshrimpy is just one of the skilled and gregarious folks you will find there.

Tranquil Tunnels, just one of Octoshrimpy's magnificent pixelated creations

I'm grateful for his time and I'm grateful to know him. You can catch Octoshrimpy's various software and artistic uploads at his brand new blog which he created just so I could plug it.

Inspired by Octoshrimpy's portfolio and my unabashed man-crush on him? This interview was done in support of EngJam, August 19th 2023 through September 3rd 2023:

What follows is Octoshrimpy's own responses verbatim to my questions (the headings).

How did you get into programming and game development? What games inspired you?

I got into programming twice, haha. first time was making a css-less website for my youth scout troop, with events and calendar, and then again when I discovered that minecraft could be modded with plugins and mods.

What led up to the development of \<recent thing>?

I have a lot of "current projects", but the one I'm most focused on at the moment is an exploration game that I have spent nearly a year looking for, and nobody has made anything like it, so I decided to do it.

Any fond memories on languages or systems from the past? Anything you were glad to see go out of style, or are there any features or core lessons missing from modern development tools?

features or core lessons missing from modern development tools? I always look back and smile to my days in high school: I made a chat system piggybacking on the school's pc network system using telnet, and wrote my own app launcher using vbscript that would auto-launch from a USB drive, so I didn't have to log in into the city library computers, as it would open the apps above the screen lock they ran, haha.

Do you still play games "just for fun"? Is developing the same kind of fun as playing?

I do! currently playing through Cloudpunk and occasionally Odd Realm. I do find building the systems for my own games is nearly as much fun as discovering someone else's systems within their games.

What's still fun or most inspiring to you?

Toby Fox from undertale/deltarune, Eric "concernedApe" from stardew valley, Thor from heartbound; I look up to them and their efforts towards making good games with all kinds of players in mind.

What's a classic game (whatever you decide that means) that still gets you pumped up?

I love dwarf fortress, even if I don't play it anymore. (it's been replaced by odd realm haha)

Other things you would want to share?

I'm octoshrimpy everywhere, but lately i've been moving away from non-federated sites like twitter/reddit and moving into activity-pub-supported versions of those like mastodon and lemmy.

May people message you for help or feedback?

My DMs are always open, and I do my best to share any knowledge I have. :)

Do you have any tips on persistence and overcoming problems? Do you code on a schedule? Do solutions come to you in the shower or while dreaming?

Sometimes persistence means walking away and letting the ol' two brain cells fight about it in the background until they settle on a solution. With that said, ideas always come to me (and people) in the shower, but that's because the shower is a place where we don't really have electronics or distractions, and our minds can wander freely in a safe, comfy space. I recommend planning "boring times" where you just sit and do nothing, except write down ideas that come to you. Being bored is great, and brings about a lot of new ideas you would not have thought of otherwise. In the current age we're always distracted by something around us, or doom-scrolling one app or another. Planning for boredom times helps exercise the creativity muscles, and gives our brain a quiet time to process all the background thoughts into foreground ideas. As far as coding on a schedule, my usual time to write code is around 8PM - 10PM, when the world goes dark and quiet. Less distractions, less overwhelming of the 5 senses, and I can focus more.

How can one decide if they need a custom engine?

Most of the time, you don't need a custom engine. There have been billions of humans on the planet, and statistics say at least a few of them have ran into the same problem you have, and a couple of those have come up with a solution. BUT in case you're one of the first ones coming up with it for the future peeps who will think of it, sometimes we do have to sit down and create something new.

Do you prefer rushing towards a minimum viable feature, or do you build to support your entire feature list?

I personally do a mix of both. I outline the features in the MVP, and then accidentally let feature creep add in new features 😅

How do you balance between extensibility and simplicity? How can newbies avoid rework of delicate, inflexible code versus overengineering?

comments. write in comments what you want the code to do, then go over it in passes. refine the logic, still in comments, and then when you have a good grasp on everything your code needs to do, ony then start writing the code. it's very difficult to write code that you don't know what it will do (overengineering) or that you think you know what it will do without more analysis (hardcoded inflexible code)

What's your organization system like? Trello, post-it notes, "// TODO" all over the code files, etc...

I run my life on markdown haha. I've built my own system to keep track of tasks and projects, but mostly it's like a flat-list kanban board like trello. the system goes as follows:

[ ][ ] your task name

[ urgency ][ status ]
    @status: note about it if necessary (block, delegate, think)

[!][?] rewrite collision mechanics
[ ][/] redo hitboxes of bosses
    @block: collision mechanics


## urgency
[!] rush
[>] important
[ ] neutral
[*] icebox

## status
[?] more thought - internal block
[/] blocked - external block

[ ] todo
[o] ongoing
[x] done
[-] cancelled
[~] delegated

What game engines did you try? What did they have as far as pros & cons?

i've played with unity, scratch, unreal, godot, gdevelop, pico8 and a couple more I can't recall. every engine has its pros and cons, but in the end I settled for godot because i'm a very big FOSS advocate and the engine does everything I need it to.

(as an engine developer) What missing features drove you to develop / fork your own engine?

I built a POSIX render engine (not game, just render) for quickly drawing graphics into the terminal, because there wasn't anything like it (other than the absolutely ancient Curses). there wasn't anything out there that could run on any POSIX-compliant shell without any dependencies, so I figured I'd make one.

(as an engine user) What compelling features helped you decide that your engine was the right one?

FOSS is always a big one. ease of use, and proper docs are also important to me. if I have questions on how to do anything, I like browsing forums to see if I can find a solution to my problem.