The only shadow casting algorithms I could find are 2D only though.
Put that through some fixers and processors and … I got the background of my profile (if you click on my profile photo you can see a weird red-green image, that’s it) by mixing an image of a stairwell and an image a of JAWS hoodie.
Yeah, but it’s basically just adding another layer to the nested loop, for the extra axis, and adding a top and bottom slope to the shadow ranges.
Maybe I should have said industrial strength?
I mean, it’s about as industrial-strength as JavaScript, except that the VM is slow and everything is indexed starting at 1 for some reason. Also it has preprocessor macros and compile-time execution.
Long rant about the legitimacy of programming languages, as defined by the software industry
EDIT: For the record, I do understand that there is a meaningful difference between TADS and the cluster of JavaScript, C#, Java, etc, but I feel like it mostly comes down to the slower VM and the giant, neon, interactive fiction sign on its resumé, but also JavaScript is extremely sandboxed and has a similar neon sign, which says “web browser”. Sometimes a language’s typical use case is enough to separate it from the rest.
EDIT 2: I vaguely remember that there might have been plans to port Adv3 to JavaScript, except—at that time—JavaScript was not meeting the desired performance metrics for mobile devices, so the TADS VM remained. In a world where industry powerhouses narrow down the number of commonly-used languages to something like a top-10, a lot of devs haven’t even heard of Lisp, much less TADS.
It’s not so much that I’m trying to defend TADS as much as it is that I’ve noticed the industry has started to define for everyone what a “proper” programming language is, and I think it would surprise people that their preferred programming language might not even make it on that list these days. There are people who don’t even think Python or Java would make the list. TADS just has a really tiny userbase and a specialized history, but the language itself doesn’t fail outside of IF; it certainly outmaneuvers VisualBasic. While that’s a low bar, VisualBasic is still considered industry-standard in some spaces.
I’m writing a proper introduction to reading and writing cuneiform, something that doesn’t really exist in the world at this point! Textbooks on Hittite (and Akkadian and Sumerian etc) tend to push cuneiform as far to the back as possible, for fear of scaring students away, but the writing system is very cool and worth learning in its own right even if you haven’t learned one of those languages first.
Currently I have an introduction, ten lessons, and a final “test” (a full original Hittite myth to read). But lessons 5, 7, and 8 still need proper exercises, and there are a couple of places where I’d love to find an example from an actual tablet to demonstrate. An interested student should be able to comfortably cover one lesson per day, though actually learning all the signs (if you want to do that) will take longer. The key is a JavaScript system I’ve been working on to render the signs conveniently in the browser.
You should just let ChatGPT write it. Here’s its first instruction for writing cuneiform:
- Step 1: Obtain a piece of soft clay and shape it into a flat, rectangular tablet.
I am slowly (very slowly) grinding on with a complete re-write of the A-code parser. You may well ask why. Originally, it was just to keep me sane in retirement and to keep my programming skill from completely rusting up. But having completed the previous self-imposed task of making A-code UTF8 compliant (still not fully documented – must get around to that), I was startled when somebody translated into Russian my A-code implementation of Roger Firth’s Nan-adventure The Cloak of Darkness. (If you know Russian, you can play it at https://mipmip.org/cloak/cloak_ru.html [must document its existence too!] The PHP front-end is still in English, but the game itself is not, though it understands English commands too.)
Now, one thing I really like about A-code is the fact that it positively encourages you to refer to objects being manipulated in game’s responses. None of the terse “Taken.”, but rather “You take <whatever>.” But in languages other than English that runs into issues of linguistic grammar. You cannot just echo a verb or an object name as given by the player or simply pull it out of the vocabulary. The word has to be adjusted, giving it the appropriate declension or conjugation, according to the sentence in which it is being embedded. Which poses an interesting problem (to me, anyway): how the heck do I implement that? And since I always enjoyed that sort of programming challenges, I now have an extra incentive to bash on.
Clearly enough, this cannot be handled just by the parser alone. Human languages feature lots of irregularities so no system can perform such transformations automatically, which means that the whole project promptly got expanded and will have to include some elaboration of A-code’s syntax – a rather larger task than re-writing the parser. Happily, I have a notion how to do it and it will keep me happily bashing code, when the mood takes me, for some years to come.
As a matter of idle curiosity… Pardon my complete ignorance of the current state of the art, but do any existing IF engines offer that kind of functionality?
Custom responses can be added in many parser programs. I know it’s editable in multiple ways through Adventuron (in the general system response, or coded manually for each command). I’m pretty sure I’ve seen it implemented in some Inform games too
Yup, a large portion of Inform (maybe the majority of it, to the extent that that’s a meaningful concept) is precisely about allowing authors to customize the responses to actions in this way.
(I’m pretty sure this is true of pretty much all parser IF systems?)
Unless what he’s talking about is specifically handling these kinds of grammar issues. Inform doesn’t go any further than conjugating verbs and performing pluralization.
Just got the logo for my WIP from the artist and I’m very happy! Now if I could squash all the bugs without introducing new ones…
The cuneiform lessons are finished! Now I just need to finish two other components:
- The renderer that makes it easy to identify signs on a web page
- The sign database needs to be updated for consistency
I’ve been working hard on Moondrop Isle, and now it’s almost time to move on to the next thing!
One of the fun parts of finishing a project is choosing what to focus on next. I was working on another big project last year, a CYOA-style Twine game called LEVIATHAN. I had a big multi-page spreadsheet going and 172 passages written. It was supposed to be for IFComp, but that’s way too soon now, so I was thinking about finishing the half-written audio escape room I started a couple years ago. Only problem is I don’t have a title for that one, and for whatever reason, having a title is a huge motivator for me to work on a project….
Maybe you can pick a noise that is dominant in your game and make that the title… like choose an onomatopoeia to be the title.
Phbbbt.
The program doesn’t seem to understand either my Russian or English right now.
I don’t know if this would work for you, but you can see how it’s done in Metaparser. It’s a parser module for INSTEAD.
As for me, I plan to add one more feature to my preparser and be done with it.
I’m currently developing an interactive adventure game that I plan to submit to the IFComp 2024. This game features a unique visual parser interface where players interact by clicking on elements highlighted in yellow, crafting sentences and progressing through the story. The game world is dynamic, with a self-generating map that adds a layer of exploration and surprise. Beyond these features, I’m also integrating AI-driven narrative elements, utilizing the best open-source engines available to create a rich, immersive experience. This project is not just about pushing the boundaries of interactive fiction but also about exploring the potential of AI in storytelling.
I’m a huge fan of pushing interface design to uncharted territories for IF. Lots of unexplored land to… explore… and that’s why writing is not my strong suit.
Welcome to intfiction!
Ah, no, I am not talking about custom responses. That’s trivial. I am talking about stock responses adjusting the word declinations (or other grammatical forms) correctly. If the player says GET CLOAK and I have a stock responses of (in A-code’ notation) “There is no {ARG2} to be seen here.”, my aim is for that stock responses to adjust the noun’s declination appropriately. E.g. in Russian ПЛАЩ (CLOAK) would have to be echoed as “ПЛАЩА”. I absolutely do not want to have separate custom responses for every different grammatical variation (declination, plurality or gender in gendered languages).