{"slug": "irc2frotz-play-interactive-fiction-over-an-irc-channel", "title": "irc2Frotz – play interactive fiction over an IRC channel", "summary": "DavesCodeMusings released irc2Frotz, a JavaScript program that lets users play interactive fiction games over an IRC channel by acting as an IRC client and connecting to a z-machine interpreter like Frotz. The tool, available on GitHub under a BSD-2-Clause license, allows any message typed in an IRC channel to be interpreted as a game action, with the game's output displayed in the channel.", "body_md": "Skip to content\nNavigation Menu\nSign in\nAppearance settings\nPlatform\nAI CODE CREATION\nGitHub Copilot\nWrite better code with AI\nGitHub Copilot app\nDirect agents from issue to merge\nMCP Registry\nIntegrate external tools\nDEVELOPER WORKFLOWS\nActions\nAutomate any workflow\nCodespaces\nInstant dev environments\nIssues\nPlan and track work\nCode Review\nManage code changes\nCode Quality\nEnforce quality at merge\nAPPLICATION SECURITY\nGitHub Advanced Security\nFind and fix vulnerabilities\nCode security\nSecure your code as you build\nSecret protection\nStop leaks before they start\nEXPLORE\nWhy GitHub\nDocumentation\nBlog\nChangelog\nMarketplace\nView all features\nSolutions\nBY COMPANY SIZE\nEnterprises\nSmall and medium teams\nStartups\nNonprofits\nBY USE CASE\nApp Modernization\nDevSecOps\nDevOps\nCI/CD\nView all use cases\nBY INDUSTRY\nHealthcare\nFinancial services\nManufacturing\nGovernment\nView all industries\nView all solutions\nResources\nEXPLORE BY TOPIC\nAI\nSoftware Development\nDevOps\nSecurity\nView all topics\nEXPLORE BY TYPE\nCustomer stories\nEvents & webinars\nEbooks & reports\nBusiness insights\nGitHub Skills\nSUPPORT & SERVICES\nDocumentation\nCustomer support\nCommunity forum\nTrust center\nPartners\nView all resources\nOpen Source\nCOMMUNITY\nGitHub Sponsors\nFund open source developers\nPROGRAMS\nSecurity Lab\nMaintainer Community\nAccelerator\nGitHub Stars\nArchive Program\nREPOSITORIES\nTopics\nTrending\nCollections\nEnterprise\nENTERPRISE SOLUTIONS\nEnterprise platform\nAI-powered developer platform\nAVAILABLE ADD-ONS\nGitHub Advanced Security\nEnterprise-grade security features\nCopilot for Business\nEnterprise-grade AI features\nPremium Support\nEnterprise-grade 24/7 support\nPricing\nType\n/\nto search\nSign in\nSign up\nAppearance settings\nYou signed in with another tab or window.\nReload\nto refresh your session.\nYou signed out in another tab or window.\nReload\nto refresh your session.\nYou switched accounts on another tab or window.\nReload\nto refresh your session.\nDismiss alert\n{{ message }}\nDavesCodeMusings\n/\nirc2Frotz\nPublic\nNotifications\nYou must be signed in to change notification settings\nFork\n0\nStar\n0\nCode\nIssues\n0\nPull requests\n0\nActions\nProjects\nSecurity and quality\n0\nInsights\nAdditional navigation options\nCode\nIssues\nPull requests\nActions\nProjects\nSecurity and quality\nInsights\nmain\nBranches\nTags\nGo to file\nCode\nOpen more actions menu\nFolders and files\nName\nName\nLast commit message\nLast commit date\nLatest commit\nHistory\n11 Commits\n11 Commits\nLICENSE\nLICENSE\nREADME.txt\nREADME.txt\nSuburbia.z8\nSuburbia.z8\nirc2Frotz.js\nirc2Frotz.js\nlsgames\nlsgames\nstartgame\nstartgame\nView all files\nRepository files navigation\nREADME\nBSD-2-Clause license\nMore\nitems\n\n```\nirc2Frotz -- Play interactive fiction over an IRC channel.\n\nirc2Frotz.js is a short little program that acts as an IRC client while\ngetting it's input and output from an interactive fiction z-machine like\nFrotz. The result is anything typed in the IRC channel is interpreted as\nan action in the interactive fiction story.\n\nWhen starting a game from command-line with the supplied shell script:\nirc2Frotz$ ./startgame Suburbia.z8\n\nIn your IRC client, on channel #Suburbia, you will see: \n\nSuburbia:   To Live and Die in Suburbia\nSuburbia:   An Interactive Fiction by David Horton\nSuburbia:   Release 1 / Serial number 200712 / Inform 7 build 6M62 (I6/v6.33 lib 6/12N)\nSuburbia: .\nSuburbia:   Sidewalk\nSuburbia:   You are standing on the Sidewalk between a two-story, post World War II red\nSuburbia:   brick bungalow with a nicely manicured front lawn, and a Quiet Neighborhood\nSuburbia:   Street. Tall oaks cast dappled shadows all around, and the birds are\nSuburbia:   exchanging pleasantries through song. There is a man standing on his front\nSuburbia:   porch. He is not smiling.\nSuburbia: > >\nDave: go south\nSuburbia:    Quiet Neighborhood Street\nSuburbia: .\nSuburbia:   Quiet Neighborhood Street\nSuburbia:   You're standing in the middle of the street. Probably not the safest place\nSuburbia:   to be, despite the lack of traffic at the moment.\nSuburbia: > > \n\nThe idea is to allow multiple people to share in what would typically be a\nsingle-player adventure.\n\nIf this sounds even remotely interesting, read on...\n\n*** You'll need the Node.js package for your OS.\nThis should not be difficult. Node.js is popular enough that it should be\navailable as a pre-compiled package.\n\nFor FreeBSD, the command is: pkg install node\n\n*** You'll need access to an IRC server on your LAN.\nRefer to your operating system's pacakage management tool for details on\nsetting one up. If you happen to run FreeBSD, see the venerable SDF website\nwiki at: https://wiki.sdf.org/doku.php?id=installing_irc_at_home\n\n*** You'll need a Z-Machine.\nThis is the tricky part, because it has to be a z-machine capable of outputing\nto a dumb terminal. For this, I used dfrotz on FreeBSD. dfrotz is \"dumb Frotz\"\na version of Frotz tailored to dumb terminals. Unfortunately, dfrotz is not\nincluded in the FreeBSD package for Frotz. This means compiling from source.\n\nIt's not terribly difficult, but you will need the git client and developer\ntools for C programs installed as prerequisites.\n\nHere's the commands needed for FreeBSD:\n1. git https://github.com/DavidGriffith/frotz.git\n2. cd frotz\n3. gmake dfrotz\n4. su\n5. cp dfrotz /usr/local/bin\n\nCompiling for Linux and other Unix-like OS should be similar. Replace gmake\nwith make on GNU/Linux systems and use sudo instead of su.\n\nCongratulations, it gets much easier from here on out.\n\n*** You'll need a story file.\nUnless you want to play my short little sample game, you'll need to download\nan interactive fiction game in the z-machine format. Old Infocom Zork games\nare available from: http://infocom-if.org/downloads/downloads.html and plenty\nmore can be found at: https://www.ifarchive.org/\n\nIn this exampe, we'll use the classic Zork I from infocom-if.org.\n1. Open the zip file and extract ZORK1.DAT.\n2. Copy ZORK1.DAT into the same directory as irc2Frotz.js\n3. Run with the command \"node irc2Frotz.js ZORK1.DAT\"\n\nIf all goes well, you'll see the following output:\nUsing z-machine file: ZORK1.DAT\nConnecting to IRC server.\nRegistering the #ZORK1 channel.\n\n*** You'll need an IRC client.\nThere are many choices for IRC clients. The previously mentioned SDF wiki\npage gives examples for setting up Pidgin and Thunderbird. Hexchat is another\npopular option.\n\nOnce you have the client set up to attach to your IRC server, join the #<game>\nchannel. The actual name of the channel is the story file minus the extension.\nSo running Game.z8 creates a channel called #Game. This way you can easily\nrun multiple games, each on its own channel, named after its z-file.\n\nAnytime someone new joins, irc2Frotz.js will automatically issue the \"look\"\ncommand to dfrotz so new players can get their bearings.\n\n*** You may need to adjust fakelag on your IRC server.\nIRC servers sometimes have a feature to slow down the output of any user who\nis sending mass content. The replies from dfrotz invariably run up against\nthis rule. If you see responses suddenly slow to a crawl, check your IRC\nconfiguration for fakelag. In inspirc.conf it's a setting called commandrate.\n\n*** Keeping irc2Frotz running.\nThere is a shell script called startgame that will take the name of a z-file\nand do all the work of firing it up, putting it in the background, and sending\nlog messages to a similarly named file (the z-file name with a .log extension.)\n\nThe manual equivalent is \"node irc2Frotz.js ZORK1.DAT > ZORK1.DAT.log &\n\n*** In case things go badly.\nirc2Frotz.js has a setting for debug. Normally, it is set to false and output\nis minimal. Set it to true and conversations between irc2Frotz and the IRC\nserver are disected and logged on the console.\n\nIf you're having trouble with games not starting, check the log file output.\nA successful startup will look like this:\n\nConnecting to IRC server localhost:6667...\nConnected.\nRegistering nickname Suburbia.\nRegistering channel #Suburbia.\nStarting z-machine /usr/local/bin/dfrotz Suburbia.z8.\n\nIf there are errors:\n* Make sure the game file exists.\n* Try running the game using dfrotz on the command-line.\n* Check the IRC server logs. Many servers limit the max. number of connections.\n\n*** Making it stop.\nIf a player dies or otherwise quits the game, irc2Frotz will leave the channel.\nThis is normal behavior. You can also end the game by killing its process ID.\nTo get a listing of PIDs on Unix-like OS, run the lsgames shell script.\n\nIt will output a list of games, like this:\nirc2Frotz$ ./lsgames\nEventHorizon.z8 (64710)\nSuburbia.z8 (64734)\n\nThe PID is in parentheses. Just copy and paste to kill it.\n\n*** Some interesting, possibly helpful, features of irc2Frotz.\nMessages can be exchanged between players when they are prefaced by \"/me\".\nFor example: Dave types: \"/me So humid!\" and irc2Frotz sends the message\n\"Dave So humid!\" to all players in the channel, but not to the z-machine\ninterpreter.\n\n/me is a standard IRC feature called an \"Action\". All actions are blocked\nfrom reaching the z-machine. This way, players can interact without getting\nreplies from the z-machine like \"I don't know the word 'So.'\"\n\nCongratulations on getting everything installed and happy group adventuring!\n```\n\nAbout\nNo description, website, or topics provided.\nResources\nReadme\nBSD-2-Clause license\nActivity\nStars\n0\nstars\nWatchers\n0\nwatching\nForks\n0\nforks\nReport repository\nReleases\nPackages\nUsed by\nContributors\nLanguages\nYou can’t perform that action at this time.", "url": "https://wpnews.pro/news/irc2frotz-play-interactive-fiction-over-an-irc-channel", "canonical_source": "https://github.com/DavesCodeMusings/irc2Frotz", "published_at": "2026-08-12 21:50:12+00:00", "updated_at": "2026-08-12 22:10:47.433795+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["DavesCodeMusings", "irc2Frotz", "GitHub", "Frotz", "Suburbia.z8"], "alternates": {"html": "https://wpnews.pro/news/irc2frotz-play-interactive-fiction-over-an-irc-channel", "markdown": "https://wpnews.pro/news/irc2frotz-play-interactive-fiction-over-an-irc-channel.md", "text": "https://wpnews.pro/news/irc2frotz-play-interactive-fiction-over-an-irc-channel.txt", "jsonld": "https://wpnews.pro/news/irc2frotz-play-interactive-fiction-over-an-irc-channel.jsonld"}}