4 ms·
Show HN: QBasic Gorillas (Repeeled)
I've found the most engaging way to practice techniques for AI-assisted development and test models is to build fun side projects in vanilla JS.
I spent many hours playing (and studying and editing) QBasic Gorillas, and this is a vanilla JS implementation using Fable and Opus.
Play 1-on-1 hotseat or against the computer. A bit of extra camera snazz as well.
- vunderba 2mo agoAs somebody who grew up in the era of MS-DOS and QBASIC - it's pretty amusing to see two AI-assisted GORILLA.BAS web games in the past week. https://news.ycombinator.com/item?id=48856350 https://news.ycombinator.com/item?id=48856350 Can also play the original as well online https://classicreload.com/play/qbasic-gorillas.html https://classicreload.com/play/qbasic-gorillas.html Feedback - the wind/round text should NOT be placed over buildings because.... one of the buildings is gray thus making it almost impossible to read. - I'd honestly get rid of the pseudo-CRT scanline filter - it looks grainy more than anything. For a better reference see https://github.com/gingerbeardman/webgl-crt-shader https://github.com/gingerbeardman/webgl-crt-shader - When implementing camera follow one thing you need is a sort of "grace window". Right now it's so tightly coupled to the movement of the banana it practically gives you whiplash.
- TonyAlicea10 2mo agoI hadn’t seen the other one! I grew up with this as well. I like the camera grace window idea. I’ve been pondering how to handle the post-hit zoom in. Good call on the wind text. I like the filter (?). I’ll look at your link. Thanks for the feedback!
- bashtoni 2mo agoI don't know if the poster changed the filter after reading your comment, but the filter that is there now looks great to my eyes.
- TonyAlicea10 2mo agoNope, haven't changed it! I think it's an aesthetic preference thing.
- vunderba 2mo agoI don't think they updated it - it still looks a very simplistic combination of slightly high frequency noise + artificial horz scanlines. I grew up in the era, and a couple of my buddies still keep a few CRTs for playing NES games so its immediately apparent to me. Similar to when laymen use AI to generate "pixel art" without doing any grid alignment or palette reduction. Retroarch also has some decent approximations of CRT scanline using shaders as well (see crt-geom crt-lottes) https://www.retroarch.com/?page=shaders https://www.retroarch.com/?page=shaders
- TonyAlicea10 2mo agoI understand, I'm not going for accuracy, just suggestion. For someone like you it won't feel right, I totally get it.
- vunderba 2mo agoYeah and CRT emulation can be a pretty deep rabbit hole. The amount of work that goes into making things skeuomorphic is pretty wild. If you want to see a neat example, check out cool-retro-term, it’s been around for a while but is still super impressive. https://github.com/Swordfish90/cool-retro-term https://github.com/Swordfish90/cool-retro-term
- TonyAlicea10 2mo agoI've made two updates: the wind and round text should be more legible with a slightly transparent background under it. The camera is less whiplash-y and pauses for a moment after the banana hit if it's zoomed out and the zoom in is a bit slower.
- pimlottc 2mo agoThe arrow length does not represent power accurately, There's a minimum arrow length even when power is nearly 0, which means when the arrow is twice as long, the power is actually almost 50 times higher! It should be directly proportional. Perhaps there should be different indicators for "power" and "direction" -- maybe a fixed-length dotted line arrow for direction? And/or a power bar that is not anchored to the player position? The arrow for wind strength also seems to be a different scale, making it hard to judge how much to compensate.
- TonyAlicea10 2mo agoFair. This is a direct port in some areas of the 1991 game, which strategically was more try something then dial it in. I’ll ponder. It’s almost arcade vs simulation in some ways. That is, if you can calculate it too easily then the first player always has a huge advantage.
- netsharc 2mo agoTrying to aim with the mouse immediately shows me "made by a fucking clanker"...
- TonyAlicea10 2mo agoI did let the LLM handle the mouse and touch aiming for v1. That’s an experiment as I prefer typing in the boxes or using arrow keys. I think it needs tweaking to let you hone in a value better. What are you thinking?
- elsig60 2mo agoI like it. I know it's silly, but I could clearly waste time on this. BTW great idea to build fun stuff to practice new tools.
- TonyAlicea10 2mo agoYes! Fun things that either you’d never have taken the time to build otherwise, or recreations of things that you know well. Things where you know how they’re supposed to make you feel (like games from childhood), and getting that experience match is an exercise.
- Dwedit 2mo agoHow much is yours, and how much is the LLM's?
- TonyAlicea10 2mo agoCode-wise, mostly LLM. I gave it the original QBasic source code so that's not mine either. This experiment was a guidance experiment for me with Fable. Heavy spec and planning architecturally and UX, and strictly no JS frameworks or dependencies. I do these kind of experiments with new models, and Fable has been the most successful so far for capturing the intended UX and feel per spec.
- disillusionist 2mo agoholy gorilla! i think QBasic Gorillas is the first graphics game i have memory of playing as a child. i remember attempting to read the code as a kid and being wildly confused by it. thanks for the brief trip down memory lane.
- TonyAlicea10 2mo agoI think the first one for me was The Oregon Trail followed shortly by QBasic Gorillas and Nibbles. It was my first step in coding beyond Turtle Graphics on an Apple from even earlier in childhood. Opening up the QBasic source code was eye opening for me: that computers weren't the realm of hackers typing incomprehensible text on TV and swapping floppy disks, but something that could start to make sense. My TRS-80 came next, and, for me, the rest was history. Good memories. I wonder what the memories will be for kids right now in the age of LLMs.
- jsmo 2mo agoAmazing, better than when I was a kid
- TonyAlicea10 2mo agoThank you! I tried to add just a little snazz without changing the core.
- BrunkenClaas 2mo agoGorillas was the first game I "learned" programming on as a kid. Fun times going through the source code without understanding anything and inferring it by my self. Well, sort of. :)
- TonyAlicea10 2mo agoSame. This was true for so many of us. An open source education.
- fragmede 2mo agoThere's a different input type for numbers, which power and angle are going to be, vs full text input.
- rjh29 2mo ago"practice techniques for AI-assisted development" I guess people don't like to admit that AI is doing 95% of their job so they pretend they are "practicing techniques" or "experimenting with new models", or "heavily planning the spec" Writing what you want in English and having the AI spit it out does not take any skill anymore, it's not 2022.
- TonyAlicea10 2mo agoThere’s a marked difference in quality depending on context, usage of sub-agents, initial specs, and model-wise a big difference from what Opus would produce and Fable. I’m not saying I’m hand coding, but saying getting good outputs doesn’t take any technique means your definition of good outputs probably isn’t very refined. And saying it hasn’t taken technique for 4 years is just flat wrong.
- rjh29 2mo agoI agree there is some technique involved. It's just so trivial compared to hand coding that I find the comparison meaningless.
- bhu1st 2mo agoI was at awe when I ran MARIO.BAS on QBasic back in 1998. Probably I got the code from a QB forum. It kept me glued to screen for weeks.
- TonyAlicea10 2mo agoAll those .BAS files were an education.
- ggoforth 2mo agoThis took me back. I used to build little text based choose your own adventure games in QBasic. Very fun (I won my first game!)
- TonyAlicea10 2mo agoI did the same in QBasic (and Tandy Color Basic)! I feel like the old Choose Your Own Adventure books were a sort of precursor to programming for a lot of us. Basic if/then/goto.