Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

2024 Participants: Hannah Ackermans * Sara Alsherif * Leonardo Aranda * Brian Arechiga * Jonathan Armoza * Stephanie E. August * Martin Bartelmus * Patsy Baudoin * Liat Berdugo * David Berry * Jason Boyd * Kevin Brock * Evan Buswell * Claire Carroll * John Cayley * Slavica Ceperkovic * Edmond Chang * Sarah Ciston * Lyr Colin * Daniel Cox * Christina Cuneo * Orla Delaney * Pierre Depaz * Ranjodh Singh Dhaliwal * Koundinya Dhulipalla * Samuel DiBella * Craig Dietrich * Quinn Dombrowski * Kevin Driscoll * Lai-Tze Fan * Max Feinstein * Meredith Finkelstein * Leonardo Flores * Cyril Focht * Gwen Foo * Federica Frabetti * Jordan Freitas * Erika FülöP * Sam Goree * Gulsen Guler * Anthony Hay * SHAWNÉ MICHAELAIN HOLLOWAY * Brendan Howell * Minh Hua * Amira Jarmakani * Dennis Jerz * Joey Jones * Ted Kafala * Titaÿna Kauffmann-Will * Darius Kazemi * andrea kim * Joey King * Ryan Leach * cynthia li * Judy Malloy * Zachary Mann * Marian Mazzone * Chris McGuinness * Yasemin Melek * Pablo Miranda Carranza * Jarah Moesch * Matt Nish-Lapidus * Yoehan Oh * Steven Oscherwitz * Stefano Penge * Marta Pérez-Campos * Jan-Christian Petersen * gripp prime * Rita Raley * Nicholas Raphael * Arpita Rathod * Amit Ray * Thorsten Ries * Abby Rinaldi * Mark Sample * Valérie Schafer * Carly Schnitzler * Arthur Schwarz * Lyle Skains * Rory Solomon * Winnie Soon * Harlin/Hayley Steele * Marylyn Tan * Daniel Temkin * Murielle Sandra Tiako Djomatchoua * Anna Tito * Introna Tommie * Fereshteh Toosi * Paige Treebridge * Lee Tusman * Joris J.van Zundert * Annette Vee * Dan Verständig * Yohanna Waliya * Shu Wan * Peggy WEIL * Jacque Wernimont * Katherine Yang * Zach Whalen * Elea Zhong * TengChao Zhou
CCSWG 2024 is coordinated by Lyr Colin (USC), Andrea Kim (USC), Elea Zhong (USC), Zachary Mann (USC), Jeremy Douglass (UCSB), and Mark C. Marino (USC) . Sponsored by the Humanities and Critical Code Studies Lab (USC), and the Digital Arts and Humanities Commons (UCSB).

Generating names for generated dinosaurs (2022 Code Critique)

Title: The Island of Doctor Wooby
Author: Ryan Veeder
Language: Inform 7
Developed: 2015

Play link:

In this text adventure, written for a virtual pet-themed game jam, the player visits an island populated by tiny felt dinosaurs. The dinosaur dolls are generated with different legs, necks, spikes or no spikes, teeth or no teeth...

This was all based on real dolls I had sewn, and given names like "Teggisaurus," "Dagadagadon," and "Mustadopagus." I wanted the generated dinosaurs to have generated names that were recognizable both as pseudo-baby talk and as dinosaur names.

(An extremely long commentary on the full dinosaur generation process is available for anyone interested.)

It strikes me that, in order to come across as stereotypical baby talk, the "roots" here run fairly long ("boofa," "smoosha"). When more than half of generated names contain more than one of these roots, I think you run into a lot of names that are too long to be, strictly speaking, cute.

A possible angle for discussion: Where else have you seen nonsense words generated to fit in a specific aesthetic? Do strategies for creating different "looks" for words have anything in common?

To name the current test subject:
    let tempname be text;
    let namecomponents be a random number between 1 and 2; [First randomize the number of "roots" that will be in the name. Right now it's 50% one root, 50% two roots.]
    if a random chance of 1 in 6 succeeds:
        increment namecomponents; [Now the distribution is 41.667% one root, 50% two roots, and 8.333% three roots. A dinosaur with three roots in its name turns out to be fairly inconvenient, so we will tone that third option down a little..]
    if namecomponents is 3:
        if a random chance of 2 in 3 succeeds:
            now namecomponents is 2; [Sow now we're looking at 41.6% one roots; 55.6% two roots; 2.8% three roots.]
    if namecomponents is 1:
        choose a random row in Table of Long Name Suffixes;
        now tempname is "[suffix entry]"; [A name with only one root requires a long suffix, since something like "Goomus" doesn't look dinosaury enough.]
        if a random chance of 1 in 2 succeeds:
            choose a random row in Table of Long Name Suffixes;
            now tempname is "[suffix entry]";
            choose a random row in Table of Short Name Suffixes;
            now tempname is "[suffix entry]";
    choose a random row in table of name roots;
    now tempname is "[root entry][tempname]";
    decrement namecomponents;
    if namecomponents is greater than 0:
        choose a random row in table of name roots;
        now tempname is "[root entry][tempname]";
        decrement namecomponents;
    if namecomponents is greater than 0: [Instead of repeating a loop until namecomponents reaches 0 like a real programmer would, why not write out all possible steps]
        choose a random row in table of name roots;
        now tempname is "[root entry][tempname]";
        decrement namecomponents;
    Now the species name of the current test subject is "[tempname]" in title case;
    now the printed name of the current test subject is "[tempname]" in title case. [The player can change the printed name of a dinosaur with a command like >NAME BUGGOBOGADON ALFIE.]

Table of Name Roots

Table of Short Name Suffixes

Table of Long Name Suffixes


  • lostpoets has some very aesthetic nonsensical words to describe the different categories of things -

  • @rcveeder I love the dedication to the sound of baby talk. I wonder if it wouldn't be useful to bring in a similar generator for comparison at this point, or rather set of generators, namely the ppg256, which share a certain construction ethos.

    For example:
    perl -le 'sub b{@_=unpack"(A2)*",pop;$_[rand@_]}sub w{" ".b(cococacamamadebapabohamolaburatamihopodito).b(estsnslldsckregspsstedbsnelengkemsattewsntarshnknd)}{$_="\n\nthe".w."\n";$_=w." ".b(attoonnoof).w if$l;s/[au][ae]/a/;print;$l=0if$l++>rand 9;sleep 1;redo} #Rev2'

    Although, their "nonesense" tends to be more in the appearance of bigrams and trigrams in the code, rather than output. Still, they share at least the aspect of generating content out of syllables.

    Actually, the piece that seems most in concert with this, might be @aparrish 's work Pincelate which is implemented in the Nonsense Laboratory.

    I should mention I once created a similar generator, but it created names for Web 2.0-style apps. Their names weren't entirely nonsensical, but their services were. Nonetheless, I think any of them would have been in the running for some serious VC.

  • This is great to see! In my Inform interactive fiction Ad Verbum, from 2000, a child challenges you to a turn-basd game where you have to say more dinosaur than him.


    The child knows a lot of dinosaur names. Ad Verbum implements a dinosaur name discriminator, and you can win — and are expected to win — by making up fake plausible-sounding dinosaur names, which he will accept as legitimate.

    This was before Wikipedia!

  • I'd love to see what the criteria for dinosaurish names in Ad Verbum are. In Doctor Wooby the saurianness seems to rely mostly on the suffixes and secondarily on the "root" segments being (almost) all trochees.

  • edited February 2022

    This will disappoint you @rcveeder but here it is!

               if (((thisword->(thislength-4)=='s') && (thisword->(thislength-3)=='a') &&
                (thisword->(thislength-2)=='u') && (thisword->(thislength-1)=='r' )) ||
               ((thisword->(thislength-6)=='s') && (thisword->(thislength-5)=='a') &&
                (thisword->(thislength-4)=='u') && (thisword->(thislength-3)=='r') &&
                (thisword->(thislength-2)=='u') && (thisword->(thislength-1)=='s' )))
                  { if ((fake_name->0==thisword->0) && (fake_name->1==thisword->1) &&
                        (fake_name->2==thisword->2) && (fake_name->3==thisword->3) &&
                    "Georgie looks puzzled - for a moment. ~Hey, you just said something like that,~ he says. ~That doesn't count.~";
                    fake_name->0 = thisword->0;
                    fake_name->1 = thisword->1;
                    fake_name->2 = thisword->2;
                    fake_name->3 = thisword->3;
                    fake_name->4 = thisword->4;
                    print "Georgie looks puzzled, as if he hasn't heard that dinosaur
                      name before. He sputters for a moment, perhaps confused by the
                      novel name, apparently finding it difficult to think.^";
                      self.dinos_forgotten = self.dinos_forgotten+3;
                      self.say_dino(); rtrue; }
                  "~Is that supposed to be a dinosaur name?~ Georgie says. ~Nuh-uh!~";

    The logic is simple and yet the Inform 6 is inelegant! You just have to say something ending in “saur” or “saurus” and not repeat the last fake name you said.

  • Awesome work with Doctor Wooby, @rcveeder, and Ad Verbum @nickm !

    Sadly, it's not online anymore, yet I couldn't help recalling the online game 'Technosphere', by Jane Prophet, Gordon Selley, and Mark Hurry (from the 90s, there were 3 different versions). Also archived here on

    I could find only images of the creatures, but, if my memory doesn't fail me, the name of the creatures was also a hybrid composition of different names... maybe a deeper search of webarchives can bring the names of these creatures back to life :)

Sign In or Register to comment.