Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411423 Posts in 69363 Topics- by 58416 Members - Latest Member: JamesAGreen

April 18, 2024, 09:37:17 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsTidepool, a codable storytelling world for kids
Pages: [1] 2 3 ... 21
Print
Author Topic: Tidepool, a codable storytelling world for kids  (Read 47797 times)
teefal
Level 2
**



View Profile
« on: February 01, 2015, 04:27:52 AM »

Tidepool is a storytelling game world you code with conversation.

Think "hand-drawn programmable MMO" or "3D MUD/MOO".

* Sketch, animate, and build in a shared multiplayer world.
* Learn to program by chatting with characters you create (true NLP comes in Alpha 5)
* Our custom game engine lets you change everything, creating branches automatically.

* Graphics are intentionally by amateurs, to encourage kids to draw.






>> DOWNLOAD ALPHA 3


Why Amateur Drawings?




Learn more



Helpers

  • happymonster
  • Greipur
  • JobLeonard
  • Sgt. Pepper
  • Prinsessa
  • jgrams
  • Moth
  • Pixel Noise
  • lithander
  • eyeliner
  • zizka
  • your name here
« Last Edit: April 19, 2016, 03:37:15 AM by teefal » Logged
teefal
Level 2
**



View Profile
« Reply #1 on: February 02, 2015, 01:32:04 PM »

As I start this devlog, I'm nearing the release of alpha 2, which finishes the custom multiplayer game engine.  Today I'll clear away the test content and start the world anew, beginning with a 3D implementation of the classic text adventure, Colossal Cave.

First though, here's a story that deserves to be told, given our mutual love of games...

Once upon a time there was a father of two who went through a divorce.  At home alone each night in his bachelor pad, he missed his daughters terribly and looked forward to their upcoming visit over the Christmas holidays.  Some nights he played a new game called Dungeons and Dragons with his friends.  Some nights he glanced at the line plots he had made while mapping the Mammoth Cave system with his wife. Both had been avid cavers.  Other times he clattered away at his home PDP-10 terminal, spelunking his way through a different sort of world, helping his bosses create the ARPANET, grand-daddy of the Internet.

One night he decided to make a computer game that his daughters could play during their visit.  Combining his love of D&D and caving, he mapped out an underground cavern with treasures and monsters, then coded up a small Fortran program called ADVENT (short for Adventure).  Players would type instructions to their in-game representative, their avatar, who did its best to carry out the instructions.  You told your avatar to GET LAMP and KILL DWARF and move about Colossal Cave as you found treasure and danger.

His daughters loved the game, as did a few dozen people who happened to find it stored on the fledgling ARPANET, one of whom was Don Woods from Stanford.  With permission from the original author, Will Crowther, Woods extended Adventure in 1977 to the version we know today, which spread from mainframe to mainframe and later to personal computers, which arrived that same year.  Without intending to, Crowther & Woods had created a new video game genre, the “adventure”, which began in text but later evolved into the graphical Skyrim’s and MMOs of today.

It all began with:  YOU ARE STANDING AT THE END OF A ROAD BEFORE A SMALL BRICK BUILDING.

Which is where I start this devlog as well.  Before me now is the original 1977 data file which contains the text, phrases, and mappings used by ADVENT.  I've written some code to parse this file to create Tidepool "scenes", which are the nearest thing to "rooms" in my engine.  The code also creates "rules" from phrases and mappings, allowing you to go from one room to another, but only if certain conditions are met.

Crowther's logic is a bit convulted. Here's one line from the data file:

14   150020   30   31   34

This tells me that if I type DOWN (30), PIT (31), or STEPS (34) in room "YOU'RE AT TOP OF SMALL PIT" (14), I can go to to room 20 but only if I'm carrying the LARGE GOLD NUGGET (50).  So what's room 20?  "YOU ARE AT THE BOTTOM OF THE PIT WITH A BROKEN NECK."  Lovely.

For the curious, here's the algorithm he used.  The first number is the from-room, the next is Y (see below), and the remaining are indices into phrases you can type.

Code:
    /*
    C Y, IN TURN, IS INTERPRETED AS FOLLOWS.  LET M=Y/1000, N=Y MOD 1000.
    C IF N<=300 IT IS THE LOCATION TO GO TO.
    C IF 300<N<=500 N-300 IS USED IN A COMPUTED GOTO TO
    C A SECTION OF SPECIAL CODE.
    C IF N>500 MESSAGE N-500 FROM SECTION 6 IS PRINTED,
    C AND HE STAYS WHEREVER HE IS.
    C MEANWHILE, M SPECIFIES THE CONDITIONS ON THE MOTION.
    C IF M=0 IT'S UNCONDITIONAL.
    C IF 0<M<100 IT IS DONE WITH M% PROBABILITY.
    C IF M=100 UNCONDITIONAL, BUT FORBIDDEN TO DWARVES.
    C IF 100<M<=200 HE MUST BE CARRYING OBJECT M-100.
    C IF 200<M<=300 MUST BE CARRYING OR IN SAME ROOM AS M-200.
    C IF 300<M<=400 PROP(M MOD 100) MUST *NOT* BE 0.
    C IF 400<M<=500 PROP(M MOD 100) MUST *NOT* BE 1.
    C IF 500<M<=600 PROP(M MOD 100) MUST *NOT* BE 2, ETC.
    C IF THE CONDITION (IF ANY) IS NOT MET, THEN THE NEXT *DIFFERENT*
    C "DESTINATION" VALUE IS USED (UNLESS IT FAILS TO MEET *ITS* CONDITIONS,
    C IN WHICH CASE THE NEXT IS FOUND, ETC.).  TYPICALLY, THE NEXT DEST WILL
    C BE FOR ONE OF THE SAME VERBS, SO THAT ITS ONLY USE IS AS THE ALTERNATE
    C DESTINATION FOR THOSE VERBS.  FOR INSTANCE:
    C 15 110022 29 31 34 35 23 43
    C 15 14 29
    C THIS SAYS THAT, FROM LOC 15, ANY OF THE VERBS 29, 31, ETC., WILL TAKE
    C HIM TO 22 IF HE'S CARRYING OBJECT 10, AND OTHERWISE WILL GO TO 14.
    C 11 303008 49
    C 11 9 50
    C THIS SAYS THAT, FROM 11, 49 TAKES HIM TO 8 UNLESS PROP(3)=0, IN WHICH
    C CASE HE GOES TO 9.  VERB 50 TAKES HIM TO 9 REGARDLESS OF PROP(3).
    */

Ordinarily, this kind of code would be a real pain to sift through, but here I'm happily delving into this historic complexity.  It's not unlike one of Crowther's own trips to the real Colossal Cave, though quite a bit less cramped and dusty.  Incidentally, Crowther followed the layout of his line plots for his game, so people who know Adventure can actually (kinda) navigate the real cave system, which is great.  A full treatment of this digital/physical archeology, with pictures, can be found here.

I'm hoping I can get through these phrase mappings by tomorrow, so I can start drawing the many objects and environments in Colossal Cave.
« Last Edit: April 12, 2016, 01:15:12 PM by teefal » Logged
teefal
Level 2
**



View Profile
« Reply #2 on: February 03, 2015, 03:29:32 PM »

Well, today was a busy day!

I started with three hours on my billable project, then another three on Tidepool/Adventure, then an old client took another two for some maintenance.  I miss the days when all I did was Tidepool, but I gotta pay the bills!

I just managed to import the room descriptions, phrases, and mappings into Tidepool.  

In Tidepool terms, this import code creates a story called "Adventure", which you see as a portal in the "Showcase" parcel (parcels are hectare-sized areas in the Tidepool world). Walking through the portal, it opens the story, displaying the first line of text and showing an empty field with new portals that take you to different rooms. Each portal in Adventure now corresponds to compass directions (n,s,e,w,etc).  By walking through different portals, I can navigate from room to room in Adventure, displaying the room's description when I do.

(screenshot here when I figure out where to put it)

So far, I don't have any items (lamp, axe, etc) importing, which is a task for tomorrow.  When these show up, I can paint them one at a time, then move them around.  I can also create painted walls and houses to make the room more realistic.  I also haven't put in the logic that makes room navigation conditional (this item needed to move to this room, etc).

Man, it's taking a long time for the Adventure story data to sync between Tidepool and the server.  Bummer.   Will have to solve that later.
« Last Edit: October 21, 2015, 10:47:33 AM by teefal » Logged
teefal
Level 2
**



View Profile
« Reply #3 on: March 26, 2015, 08:39:35 AM »

With nearly no Tidepool time in January and February, I reached a billable resting point in early March and resolved to release the long delayed Alpha 2.  Crossing Pennsylvania by bus with the Moravian Choir on their Ohio tour, I dove in to fix the 20 holiday bugs.

The first ten were easy, giving the woefully mistaken impression that I was halfway there.  As I trudged through the thornier issues, it became clear that some wholesale rewiring was needed.  My months away had given me a fresh perspective, prompting new ideas for a cleaner foundation.

While never a good idea to make big changes to a "release candidate", I deemed the risk worth it and ripped up the floorboards.  First one major piece, then another, I went on a "refactoring" binge, all the while hoping the big release was right around the corner. After wrestling the changes to the ground, I fixed all but one of the holiday bugs and made a new release candidate.

Well, today's "smoke test" wasn't good.  I found another 19 bugs!  Not surprising given the scope of the changes, but come on!   Nineteen steps forward, nineteen steps back.

Given financial priorities, I need to put Tidepool back on the shelf again, so March will end without a release.  While in my head I know the code's in a much better state, my heart feels like nothing's changed in over four months.

And now more waiting . . .
« Last Edit: October 21, 2015, 10:47:42 AM by teefal » Logged
happymonster
Level 10
*****



View Profile WWW
« Reply #4 on: March 27, 2015, 12:45:54 AM »

Keep going.. Smiley
Logged
teefal
Level 2
**



View Profile
« Reply #5 on: March 30, 2015, 07:11:19 AM »

Thanks happymonster.
« Last Edit: May 26, 2015, 05:27:20 AM by teefal » Logged
teefal
Level 2
**



View Profile
« Reply #6 on: May 19, 2015, 04:26:24 AM »

Well folks, hell did indeed freeze over last weekend.  After six months of financial limbo, I was finally able to fix Tidepool's remaining bugs and ship Alpha 2 to my 100 alpha testers.  

You can see my quick tutorials here.

Now begins the fun part ... adding my own programming system that will let players code their creations. No, I'm not using a traditional scripting language like JavaScript or any other C-derived procedural bag of control-structure tricks.  Instead, I'm using my years of teaching young children how to program to make something more contextual, more flexible, more like human language.  It'll be rule-based, much like Prolog, but more .... event-driven.

To hear me ramble about it for 20 minutes, listen to today's podcast episode.

My current schedule has me finishing this current milestone by mid June.  As for Colossal Cave, I decided to hold off on the core logic so that I can use Tidepool's rule system to implement Crowther&Wood's action mapping.
« Last Edit: May 27, 2015, 07:24:02 AM by teefal » Logged
teefal
Level 2
**



View Profile
« Reply #7 on: May 20, 2015, 05:11:38 AM »

Yesterday was all about luring people on my alpha list to actually respond.  Turns out my mailing list announcement on Saturday ended up in most people's spam (or worse), so I took the time to individually address all 100 people, asking them to click a link to let me know they're out there.  Yes, sounds desperate, I know.  And I kinda was.

I made a landing page that summarized how to download and play the new Tidepool release once I realized that most people didn't get the first email.   The good news is that my response rate greatly increased ... almost half have at least clicked through the link and seen the landing page.  Still very few downloads and NO players except me, my wife, and daughter.  Yes, I know, it's been less than a day for most of them.  I'm impatient, okay?

In other news, today's podcast discusses thorny addressability issues in-game, such as what does it mean when you type "seymour forward 100" when you've got two agents named seymour by different players AND a player named seymour.
« Last Edit: May 26, 2015, 05:27:08 AM by teefal » Logged
teefal
Level 2
**



View Profile
« Reply #8 on: May 21, 2015, 05:35:56 AM »

In today's podcast, I broke down the eight core concepts in programming and came up with examples for how to implement them in Tidepool.

Specifically:  variables, expressions, statements, blocks, conditionals, loops, events, rules.

Tidepool has a few constraints that make designing this new language more difficult than the norm.  For one, it has to be easily understandable by young children (ages 7 and up), which means it cannot rely on strict syntax and a lot of punctuation.

Another constraint is that it has to be easily typed as a chat message ... line by line ... so, no colored blocks and tiles and no text editor formatting.  Related to this is that it must be able to be SPOKEN easily.  We want voice input to remain an option, particular when people use Tidepool on small devices.

Anyway, I came up with a small test bed of statements that I'll start implementing today:

* seymour, forward 10
* seymour, when anyone is near, forward 10
* seymour, begin, forward 10, turn 90, forward 10, turn 90, forward 10, turn 90, end
* seymour, repeat forward 10

Syntax will very likely change many times before things settle, but this is a good enough start for now.
« Last Edit: May 26, 2015, 05:26:58 AM by teefal » Logged
teefal
Level 2
**



View Profile
« Reply #9 on: May 22, 2015, 05:39:08 AM »

From interrupt lookup tables to event processing queues, code is often kicked off in more ways than RUN.  Today's podcast talks about Tidepool events and rules, which allow you to specify all manner of custom actions whenever certain conditions occur.

A few examples:  "when someone says meep, jump in the air and say meep too";  "When someone comes near, run away";  "When someone clicks on you, change your animation to "Frightened Fox".

Tidepool has a message dispatcher that routes all changes between players through the Storymill server.  Whenever a change arrives, agents in the same story need to check their rules to see if one them needs to be fired.  For example, when player @teefal presses the W key to move forward, agent #happyFox needs to check how far it is from @teefal.  If @teefal is "near" (perhaps 2 meters away), then #happyFox fires off the "run away" rule.

One of the reasons I built my own game engine is so I could customize this nitty-gritty stuff, allowing me to make the programming language intrinsic to the game environment.  I've got very specific ideas on how I want to teach programming to children.  Having my own engine lets me get creative and do non-standard things.
« Last Edit: May 26, 2015, 05:26:49 AM by teefal » Logged
teefal
Level 2
**



View Profile
« Reply #10 on: May 23, 2015, 03:29:18 AM »

Programming in Tidepool has three key differences with other systems.  First, the overall model is one of conversational language acquisition.  You chat with your agents to learn what they know and to teach them new tricks.  Second, all coding is "talkable," meaning you can dictate it through a voice recognition interface.  Last, coding is very flexible as there are often many different ways to say the same thing.  Tidepool will use Storybot, our cognitive agent, to help determine what players are trying to say using "do you mean?" clarifications based upon the evolving context.

I discuss all this in today's podcast, along with my first testbed of sentence types:

* seymour forward 10
* seymour turn 90
* seymour sound meep
* seymour begin, forward 15, turn 120, forward 15, turn 120, forward 15, end
* seymour when square, begin, forward 10, turn 90, forward 10, turn 90, forward 10, turn 90, forward 10, end
* seymour when anyone is near, forward 10
* seymour when mosey, forward 25
* seymour square
* seymour mosey

As you can see with the "square" example, I'm using the "when" clause to define what would be a method or function in another system.  "When" statements define rules, which are the quintessential code block in Tidepool.  Anything more than a simple command or block is a rule.
« Last Edit: May 26, 2015, 05:26:40 AM by teefal » Logged
teefal
Level 2
**



View Profile
« Reply #11 on: May 24, 2015, 08:19:07 AM »

Regular expressions are likely the most powerful, most underrated, tool in all of programming, or so I preach in today's podcast.  I also touch on Tidepool's parser, which allows players to type commands in a variety of formats, allowing something closer to natural language than your typical syntax-laden command line.

Of particular interest today is messaging scopes.  When you type a line into Tidepool's message bar, where does it go?  Does a player or agent on the other side of the Tidepool world see it?   How about those outside your current story?   At this point, Tidepool will have the following scopes:

  • world - every player/agent will see your message
  • neighborhood - only parcels where the sender is a "helper" will see it
  • parcel - only the sender's parcel will see it (and all the stories in that parcel)
  • story - only the sender's current story will see it (and all its scenes)
  • scene - only the sender's current scene will see it

By default, only players and agents in the sender's current scene will see messages.  Keep in mind, when I say 'message', I don't just mean chat messages.  Every action and change in Tidepool is done by sending messages, so "seymour forward 10" will be seen by other agents and players in seymour's current scene.

I haven't figured out the syntax for specifying other scopes yet.  More examples are needed.
« Last Edit: May 26, 2015, 05:26:30 AM by teefal » Logged
teefal
Level 2
**



View Profile
« Reply #12 on: May 25, 2015, 12:06:56 PM »

Once you've taught a Tidepool agent some new rules, how do you change them?  The answer is the director, a new user interface element that I discuss in today's podcast.  The director is much like a programming IDE (integrated development environment) in that it lets you review and edit your code, then step through it like a debugger.  It's your window inside your agents, letting you browse and extend their capabilities.

Another UI element is the timeline, which lets you hang rules on timed events, so you can say things like "angry bear, when player time is 20 seconds, do a scary dance."  This lets you schedule events relative to a player's entry into your story or scene.  The timeline gives you an overview of what's about to happen in a story as well as what has already happened, so you can use it to investigate past activity.

The third programming tool is the roster, which will soon be extended to let you control agents directly, playing and stopping them, setting properties, and so forth.   Think of the roster as a kind of buddy list for the agents and players in your story.  Add in the message bar and lexicon and you've got the full programming interface for Tidepool, along with the goals for the current milestone, and June.
« Last Edit: May 26, 2015, 05:26:19 AM by teefal » Logged
teefal
Level 2
**



View Profile
« Reply #13 on: May 26, 2015, 05:54:50 AM »

A big part of developing & marketing a software product is management, or talk-talk-talking through your goals, plans, and pesky side issues.  Given a choice, I'd gladly ignore such things and happily wallow in the code all day, but given my background and skills, I'm usually the one brainstorming schedule and marketing plans, as I do in today's podcast.

The plan is to release the next version, Alpha 3, the programming version, on June 20th.  On that day, we also launch our Kickstarter campaign to raise funds for our courseware authors.  I'm planning to pay eight people to create 24 courseware units.  Each will get paid $1000 a unit for 40 hours work (two weeks).

Kickstarter donors who give $50 or more get to use Tidepool right away.  Backers that give $25 wait until Alpha 4, the courseware version, on July 19th.  By then, we should have eight units.

A month later, we launch the Tidepool closed beta on August 13th.  We focus our publicity efforts in August on teachers and schools, who are just beginning their class prep.  As fall begins, we throw a big bonfire party with friends and family on September 26th.  On that day, we open up the floodgates and let everyone play.  

* $50 gets you in during Alpha 3 (June 20)
* $25 gets you in during Alpha 4 (Jul 19)
* $10 gets you in during the closed Beta (Aug 13)
* everyone gets in for the open Beta (Sep 26).

Sounds like a plan, and a lot of work!

[EDIT] Changed plan to include closed beta.
« Last Edit: June 02, 2015, 04:51:41 AM by teefal » Logged
Greipur
Level 6
*



View Profile WWW
« Reply #14 on: May 26, 2015, 06:01:44 AM »

Being able to draw new sprites for the game in the engine on the fly caught my attention, I'd love that feature if I was a kid today! Smiley

I would recommend that you utilise more of all the visual content you have in this devblog. Screenshots and animated gifs will help you a lot to quickly communicate what you're going for. I'd say it helps even in cases when you need to show complex concepts.
Logged

teefal
Level 2
**



View Profile
« Reply #15 on: May 26, 2015, 06:15:48 AM »

Thanks Greipur.  You're right of course, I need to put more images in here.

I guess I started this thing as a way to show my Colossal Cave efforts, and thought to post those images here, rather than the UI work I had down prior to February.  Perhaps I could post select sketches from people, whether they have to do with the post or not?

My worry is that tigsource will be unimpressed with the in-game sketches, since they are mostly by kids and unskilled artists.  This is of course my intent ... we're deliberating avoiding clipart and professional quality images, since in our research we found that kids are less likely to draw their own if there's better looking alternatives.  We want it to look like a kid-drawn world, which may get misinterpreted on tigsource.

Am I worrying too much about this?  Here's a sample, called "happyFox":

« Last Edit: July 10, 2015, 06:32:36 AM by teefal » Logged
teefal
Level 2
**



View Profile
« Reply #16 on: May 26, 2015, 06:21:50 AM »

Here's a screenshot of a herd of animals moving on through:

« Last Edit: July 10, 2015, 06:32:45 AM by teefal » Logged
Greipur
Level 6
*



View Profile WWW
« Reply #17 on: May 26, 2015, 06:26:09 AM »

I understand your hesitation, but If you show it in its context (such as the screenshot you just posted) I think you'll get what you're going for.
Logged

teefal
Level 2
**



View Profile
« Reply #18 on: May 26, 2015, 06:35:53 AM »

Here's me drawing a sketch:

« Last Edit: July 10, 2015, 06:32:56 AM by teefal » Logged
JobLeonard
Level 10
*****



View Profile
« Reply #19 on: May 26, 2015, 11:23:37 PM »

My response to this thread can be summed up as: Hand Thumbs Up Left Grin

Also, as someone who's also tinkering with the subject of "what makes a good programming environment" in his spare time, I think you should check out these videos by Bret Victor:








They're mind-blowing and awesome.
Logged
Pages: [1] 2 3 ... 21
Print
Jump to:  

Theme orange-lt created by panic