Can Inform 7 can do these 10 things?

Hi there everyone. I am new to designing my own interactive fiction. And I have decided that I will make an interactive fiction game.

When I need to learn something new I usually embark on an ambitious project. If it takes me a long time to get done and is very difficult to accomplish, then I am happy. The insane dopamine kick I get when it’s done is like no other. I’m just one of those people.

Anyway, I want to know if it will be possible to accomplish an interactive fiction game with the following features:

  1. COMPLEX STORY BRANCES: I have heard that Inform 7 can help me design rich and complex story branches with multiple endings depending on what the player decides to say or do. That is great! So I should be able to implement multiple story branches that have consequences for behaving well and multiple story branches that have consequences for behaving badly? My player’s choices must matter (morality system).

  2. SIDE QUESTS: If the above is true I should be able to design some simple side quests that grant players rewards, yes?

  3. INVENTORY: Speaking of rewards. My players are going to need a place to keep a bunch of unique items that they can use to influence their game experience. Will an inventory be possible? Is it also possible to limit the size of the inventory? Things like item weight and encumbrance from Skyrim and D&D come to mind.

  4. CRAFTING MECHANIC: Will it be possible to design and implement a crafting mechanic so that my players can craft a few items of their own? It wouldn’t need to be super complex. Just something as simple as combining items, a new item is added to their inventory, and the ingredients get removed from the inventory. Would that be possible? If so, will it be possible to combine items that were crafted to create new items? Obviously, players will not be able to craft ad infinitum. There will be limits.

  5. SKILLS AND ATTRIBUTES: Will I be able to design and implement a skills and attributes system like a traditional RPG? If so, will I be able to have my players “equip” certain items and weapons that are in their inventory in order to better or alter these skills and attributes?

  6. XP AND LEVELLING UP: Will I be able to level these skills up by completing actions and gaining XP from certain actions? And what would that kind of progression look like? Will I be able to code in a way for players to choose a “Class” before they start and then have a single-track level progression or will I be able to code it in such a way so that my players start with generic skills and can decide to mould their character’s abilities in a certain direction like Skyrim? If I am being honest, I’d much prefer the latter based on the kind of story I am writing. But if it is only possible to do the first option that’s OK too. It’s really not the end of the world.

  7. PUZZLES AND COMBAT: I am currently looking at different combat mechanics to use for this game. I like the idea of the ATTACK system used in Kerkerkruip. But if you guys have better or more interesting options, please let me know. With that said, I do know that most of the game will have puzzles and mysteries to solve in order to progress along the main storyline. Similar to the works of J.K Rowling and possibly Dan Brown.

  8. MAGIC SYSTEM: I am also looking for different ways to implement a magic system. I am very keen on figuring out a way to make the magic system in The Reliques of Tolti-Aph work for me. My magic system doesn’t work with scrolls but the players will still need to be taught the spells in order to acquire them for use. So maybe I can wrangle a way for the players to only type in a “learn spell” command after a required interaction with a specific NPC? Would something like that be possible? If you have other suggestions for interesting magic systems please let me know!

  9. HEALTH POINTS: I would also very much like to know if it would be possible to code a way to track health points? And other more psychological values like what Call of Cthulhu does for insanity? And would it be possible to make it so that if certain values are equal or greater to a certain number that certain story branches are thus triggered? And others are no longer available?

  10. LOCATIONS: Luckily for the most part my story takes place at a dusty old university so there will be plenty of space for lots of rooms to explore and go to. But would it be possible to code sort of a fast travel option? I think it will be problematic to the story if players need to walk through a bunch of rooms and hallways on a long route from one end of the university to another. I want my players to be able to explore a little bit to find and do some interesting things. I essentially want it to be semi-openworld. In the sense that they are free to explore as much as they want. But there is only one region to explore, the university grounds.

DISCLAIMERS:

  1. I am basically only asking for yes, no, or maybe answers to these questions. I am not at a stage now where I can go in-depth into how these elements are to be done. That would take forever. And I first need to learn the basics of the Inform 7 language. I just need to know if these will be possible or not. So, rest assured you don’t need to help me with getting the coding to work right now.

  2. The story comes first! Even if some or all of these things are doable. If they negatively affect the narrative impact of my story I won’t really use them. If you feel that one or more of these options will dramatically affect a narrative please don’t be shy to share how it changes the narrative. I’m not claiming that this story is the best story ever written. Quite the contrary actually. I think it could use a whole lot more work. Nevertheless, this story is very near and dear to me. So, I don’t want to muck it up on account of a fancy game mechanic.

Thank you.

3 Likes

Easy answer: Yes x10

There are multiple ways to accomplish each list item.

6 Likes

As Hanon says, this is all doable in Inform, though few of these elements are out-of-the-box features of Inform (or any other IF-centric language). Honestly as you’ve described it, the game seems more like like an RPG than a traditional piece of IF - which is all fine, genre hybrids like Kerkerkruip can be great! But it might be worth considering other tools/languages that might be easier fits for the idea (or, contrarily, if learning Inform seems exciting, shifting the concept for your first game to one that’s more closely aligned with the language’s affordances).

8 Likes

Of the things on your list, there’s built-in support for locations and inventory (but not weight or encumbrance). There’s nothing stopping you from implementing the rest, but there isn’t built-in support.

4 Likes

As others have said, this is all possible, but will likely require lots of coding for some of it. It seems you haven’t made interactive fiction before, and therefore don’t have a thorough understanding of Inform 7. I wouldn’t tackle this type of game until you have more experience with Inform 7 and have a rough idea of how to code this.

2 Likes
  1. I would suggest writing out your game in a notebook or a Word processing document first before you try to learn Inform 7.

  2. Start out small at first. Make your university 20 rooms big while you are fleshing out your classes, spell casting, side quests, item weights, crafting, encumbrance, combat, etc.

  3. Google the phrase “Inform 7 Handbook by Jim Aiken”. Download that, and use that to learn Inform 7 instead of the documentation that comes with Inform 7. You can use whichever one you like best and use the other for a reference.

  4. I don’t think your Skyrim Hogwarts University interactive fiction game will be as popular as the real Skyrim and Hogwarts Legacy graphics games. But still, if this is the story you want to tell, I say you should go for it.

It is fun and exciting to create new worlds in Inform 7, so take that excitement as far as you can and do not attach yourself to any specific outcome. Just have fun with it and post your questions if you need any help.

4 Likes

This is a very good suggestion. I’d suggest experimentally making separate small mini game examples to prototype each element/system and then a small demo version with everything to make sure all your systems interact with each other correctly before committing to write the full game. This will make the authoring process easier since you can write your scenes without being hamstrung by a process or system you haven’t fully worked out yet.

2 Likes

I know you mention not focusing on specific implementations of these things at this moment but I wanted to offer if while you are learning how to do any of these things in Inform 7 you’d like help from others, advice or code examples, I was working on an alchemical crafting system for a game I was working on last year that might at least provide some inspiration for how you might go about making a crafting system. I’m wanting to go back to it to abstract it out into a separate extension in case I want to use it in something else later (or for others to use) and could work on that if you’d find that helpful (or just share the specific implementation).

I believe I tried to do something similar to what I used for the alchemy system to create a means of creating semi-custom spells (similar to how for example morrowind allows one to create custom spells from predefined affects) but I forget if I actually had any success with it. Again, I could look to see if I still have this file and share it with you if you like, though it might only serve as inspiration if I didn’t actually finish it. This version of spells I was working on was partially inspired by the game I was working on I previously mentioned which I could also share the implementation there, but iirc was also inspired about someone asking about spells here on the forums and I could try and find and like that post if you would find it helpful.

Finally with the skills system I believe I saw a post here somewhat recently where someone shared a general skill system extension they had created. I could also try to find that post again and link it if that would be helpful.

Of course, if you are focusing on the basics now, you may not want these until you are working on a specific task in which case feel free as well to message me about any of these things in the future when they are more relevant to you.

2 Likes

The documentation (and its index) that comes with Inform7 should be a big help. Also take a look at some of the available extensions.

My suggestion would be to start with just one of your points and create a small example to implement a solution.

For example, here is an implementation of a tiny game with two outcomes, each reflecting a moral choice, to demonstrate point 1.

Main Street is a room.  The gunfighter is a person in Main Street.  The gun and the pen are things in Main Street.  The description of the gun is "a 37 magnum, engraved 'Dirty Harry'".  The description of the gunfighter is "He looks mean.".

After taking the pen:
	end the story finally saying "You write a novel about the gunfighter.  He pays you for a signed copy.".

Sad#ending is a scene. Sad#ending begins when the player is carrying the gun.

When sad#ending begins:
	end the story finally saying "You unwisely challenge the gunfighter.  R.I.P.".

By the way, I illustrated two ways of arriving at an ending. The after rule is shorter but a scene gives you greater control.

1 Like

I am not sure if anyone has said this yet, but be sure that you keep your expectations clear to yourself. I think you do, to some extent, as you’ve said something about the story not being ‘the best in the world’ and it ‘needs work’. Typically, an author writes a story with the intention that it be released, and experienced by an audience. You are going to get some kind or kinds of result from this; you’ll get your fans but also critics. Probably the biggest event that we have (to my knowledge) is IFComp (but there are others, like Spring Thing). Lots of good and great IF pieces get their first release in this event; I would say that this is your best first step to exposure. I would have to say that short games that can be played in the space of an hour or two are favored; long games are at a disadvantage. Not to say that they aren’t great; a lot of IFComp players see the Comp as a buffet, ‘what can I play here that I can enjoy for an evening?’, others are judges that have to move on to another game soon.

That said, I am one of the Kings of long form games. My games-- Bullhockey!, Bullhockey 2, and The Incredibly Mild Misadventures of Tom Trundle–were all long form. Bullhockey! was my magnum opus, but it placed 49th of 77. Trundle did 59th in its year. (Bullhockey 2 was a Spring Thing entrant.) But you see, the competition is very stiff, so I see it more in terms of my games placing behind, and in front of, other really good games. For example, Trundle placed 59th, meaning that 58 really good games placed higher, and about 20-odd really good games placed lower. Mine was just one of them.

When you enter IFComp, you get a place on IFDB (Interactive Fiction DataBase) for your game. Players can register their critiques of your game there, and you get a lot of information on who has played your game, etc. But truth be told, once your game is released you won’t really know truly how many people have played your game, as IFDB I think only keeps track of players who are members. And your game will be on the IFArchive (where files of literally thousands of IF pieces are kept), where it will be generally available for play. But you see, an IF piece is a work of art, a child of the artist. You nurture it, you develop it, but then you release it. You have to trust that some people will appreciate it. And accept that you may rarely hear a thing from/about it.

I enjoy the hell out of using Inform7. Writing long form pieces gives me tremendous satisfaction. Just the act of it. That is really all I expect. I am working on three more pieces (which is why I haven’t entered a Comp in 3 years). Really, getting good reviews and knowing that people have played my pieces and enjoyed them were icing on the cake. The writing and configuring and devising were the cake, and I would take it without the icing. It is really a great thing to successfully code a complicated part of a story and see it working smoothly.

I hope you get the satisfaction that you seek from composing your piece with Inform7. As Hanon says, there are multiple ways of doing each of the things you list. This is part of why I love Inform7, you have so many choices. When you envision a situation or puzzle to add to your piece, don’t let its complexity discourage you from trying to implement it. Don’t stop trying to put it together; use the manual(s) to the limit, until you reach your goal. I hope you create piece that works to your satisfaction, and you get a satisfying result.

7 Likes