Programmer. Web Developer. Problem-Solver. Let's build the future together.
I am a programmer working in the Edmonton, AB area. I am passionate about what I do, and dedicated to improving my skills on an ongoing basis. My current passion project is IntFicPy, a game engine for creating interactive fiction in Python.
© Rita Lester 2019
IntFicPy is a Python game engine for creating parser-based interactive fiction (text adventures). IntFicPy is designed to be comprehensive and extensible. It has 78 predefined verbs, including all the standards of the genre, many with syonyms (get/take) and alternate phrasings (put hat on/put on hat). Game creators can define their own verbs - which integrate seamlessly with the predefined verb set - in minutes. Built in support for complex conversations with NPCs, dark areas and moveable light sources, locks and keys, save/load, and much more.
Why IntFicPyI created IntFicPy because I wanted to write parser games in Python. Since Python is one of the most popular programming languages out there, and popular with beginners in particular, there is a wealth of resources available. Hopefully this will help lower the barrier of entry.
ParserParsing natural language commands can be challenging. For this project, the problem was simplified substantially by the conventions of interactive fiction (IF). Commands are always in the imperative tense (phrased like direct orders). Knowing this, we can guarantee the basic word order of commands.
The IntFicPy parser starts by looking at the first word of the command, which should contain the verb. It then uses clues from the command, like prepositions, and number of grammatical objects to determine which verb function to call.
VerbsAt the time of writing, IntFicPy has 78 verbs built in. Users can also create their own verbs, specific to their games.
Each verb in IntFicPy is an instance of the Verb class. When a new instance is created, the verb is automatically added to the game's dictionary of verbs. When synonyms are added using the addSynonm method, they are also added to the dicitonary.
Item ClassesIntFicPy currently has 28 classes for items, all subclasses of Thing. Each class of item behaves differently when used for verbs. For instance, you can put a Thing in a Container, read a Readable, unlock a Lock using a Key, or look through a Transparent.
Composite items can be created with the addComposite method, to create, for instance, a box with writing on it, or a dresser with three drawers.
Non Player Characters and ConversationsThe class for non-player-characters in IntFicPy is Actor. The most important distinguishing feature of Actors is that the player can talk with them. Creators can either set up responses to Topics ("ask/tell/give/show X (about) Y", where X is an Actor, and Y is an item in the game or creator defined abstract concept), or use SpecialTopics. Special topics allow for a menu style conversation, where the player can select from topics that are suggested to them.
First ReleaseIntFicPy is currently in the testing phase. The first release is planned for fall, some time after IFComp 2019 closes.