<types in web form>

2025-10-31 03:32:25 PDT mudhole Loading /Users/mdh/Code/CodeKawa/cyberhole/mudhole.txt
2025-10-31 03:32:25 PDT mudhole 3cf0f3dd-0b70-4d7f-8358-e449cb3be750> Hell is here!

\o/

#lispgamejam #scheme #cyberhole

I have to conn bob to logout, because I haven't written `quit` yet. I'm printing password, that won't be true in a minute.

But I now have user accounts! I've debugged them sorta well. Probably has another crash or two.

#cyberhole #scheme #lispgamejam

Hard stuff is easy. Easy stuff like reading/writing data files is hard.

My usual functions for this are R6RS, which has nice handling of exceptions and text encodings.

Kawa has R7RS-like shitty I/O, Scheme `guard` is given no information, so I have to use Kawa's `try-catch` Java hack. read/write/write-string work as expected. No get-string-all, instead this bullshit:

#cyberhole #kawa #scheme

And I now have rooms (a single room), descriptions, and entry/exit messages!

If I bang on this tomorrow and get talking in the same room going, which should be easy, I'll think about uploading a first usable alpha!

#cyberhole #kawa #scheme #lispgamejam

I'm just basking in the warm glow of having a (until tomorrow) single-user, single-room MUD running in a weirdo Scheme on an annoying server technology.

I could probably start the server, run thru a couple browsers, and prove that it's multi-user, but… tomorrow is fine. Hmn. I have beer!

Sniped by a comment on IRC, I have phlogged about game design:

gopher://cyberhole.online/0/phlog/20251104_190646.txt

#cyberhole #gamedev #gamedesign

I can move around! Don't have chat working yet, I need to wire up more UI and deploy before that happens.

#mudhole #cyberhole #gamedev #scheme #lispgamejam

Basic chat commands, but I'll deal with the UI tomorrow.
#mudhole #cyberhole #scheme #gamedev #lispgamejam

JS client can talk to the server!

First I didn't even have a CORS filter, then it was erroring out "* not allowed with auth", but IN FACT, * is no longer allowed at all, and the docs lie. I could write my own filter instead, but I really only have 3 or 4 possible origins, now it just works.

Client doesn't yet set a session ID, so I can't persist a connection, but I'll deal with that in a bit.

A hearty FUCK YOU to the developers of CORS.
#mudhole #cyberhole #scheme #gamedev #lispgamejam

Spent an annoying while making sessions persist from an untrusted JS client.

"I do this not because it was easy, but because I thought it would be easy."

Gonna try packaging and get it up on site now.

#mudhole #cyberhole #scheme #gamedev #lispgamejam

OK, I have every part running on my server.

Of course, now I need to get Tomcat on SSL, or forward requests, or some fucking thing.

And I'm so goddamned tired of sysadmin shit right now. I miss HTTP-no-S.

I'm done for the night, until sleep/coffee cycle repeats. I have a stupid hack I could do to make it work-for-demo, which I'll do if I'm completely stymied tomorrow.

Game dev: 10% effort. Sysadmin shit: 990% effort.
#mudhole #cyberhole #scheme #gamedev #lispgamejam

I have done the dumbest thing that could possibly work. Hacked on a thing I shouldn't hack on, but it *works* well enough.

super secret URL you can join me in testing with:
http://
cyberhole
.online
:8080/cyberhole/mudhole/index.html

Join the lines. Not https. Don't tell the machines.

Also it doesn't yet update itself, you have to hit enter or say something to see updates. Will try to fix that if this works.
#mudhole #cyberhole #scheme #gamedev #lispgamejam

Just hitting enter will get you your message backlog and a red "null".

Sitting here watching logs, and I can see an https.

Have updated it to ping the server (a little obviously, I'll clean that up) every 5 seconds and also show multiple users in a room with `look`!

http://cyberhole.online:8080/cyberhole/mudhole/index.html

Hack level: 99. But things that work!

Tell me if you find the secret room. It's not that secret, but I don't tell you exits, so.

I think my brain is toast.

#mudhole #cyberhole #scheme #gamedev #lispgamejam

Server stayed up overnight. That's promising.
@mdhughes i want to report a problem. the input bar flashes once per 1 to 2 seconds and drop a character of input or more
@mdhughes can fix it any time by now... (if you have the source repo available)
@iacore Yeah, it's every 5 seconds as it calls the server. It drops spaces only. It'll get fixed in the next version, but that's not today, for sure.
@mdhughes it drops every kind of character though...

@iacore It shouldn't, it queues all the text entered, and the submit just clears/restores the input line after adding text. I'll worry about it more tomorrow, tho.

Anything else going on with it? I should log in and see.

The Mudhole is now submitted and running

ON THE ITCHIO AND CYBER HOLE

https://itch.io/jam/autumn-lisp-game-jam-2025/rate/4002647

#mudhole #cyberhole #scheme #gamedev #lispgamejam

Mudhole update!
https://mdhughes.itch.io/mudhole

Made security fix, you should no longer see multiple "dead" users in rooms, and get "hello'd" by a half-dozen zombies. Still need to put in a proper AFK reaper, but that's for later.

Totally invisible to you, but it's now easier to deploy in different places on dev & prod.

Client no longer gets confused about where you're typing, I HOPE.

Will have a lot of bigger stuff after the jam's voting ends!
#cyberhole #mudhole #scheme #gamedev #lispgamejam

Mudhole by Mark Damon Hughes

MUD (Multi-User Dungeon) written in Scheme

itch.io

Not nearly done, but I've started on a redesign of my Grimoire GM tools. Right now I can make maps that could go into Mystic Dungeon
https://cyberhole.online/dungeon/

or into my HTML document tilemap function
https://mdhughes.tech/rpg/tilemap/

or just be exported as a big bitmap.

Can be arbitrarily large, here it's just 32x32 on a 24x24 display.

Now I have another thing depending on my database saving files, so that's next. Ha yes it's all one problem.

#cyberhole #mysticDungeon

Best thing I've learned today is how to efficiently chop out a sprite in HTML/CSS:

<img src='FILENAME' style='object-fit:none; object-position: -XXXpx -YYYpx;' width='WWW' height='HHH'>
(where SHOUTING is variables)

It does need to be scaled correctly already, you'll have to fuck around with transforms if it's not, and then you're better off just using canvas & JS again.
#html

I'd love to make a new knockoff Star Trek game. I have *projects* to do first. But it's always bugged me, and I have all this stuff I can do with Terminal now.

I might make it a multiplayer door game, so the back end can be Scheme, same way I do Mudhole.
#cyberhole

I've learned how to use this new input device called a "rodent" and select things from a menu, it's not as efficient as a keyboard but some people like it.

Started figuring out how load/save works, but that's hard. Tomorrow.
#cyberhole #mysticDungeon

@mdhughes how do you get the source?
@screwlisp Source is now up. For whatever value that gives, it's so hacky and all depends on systems configuration.