Hello everyone. I've been writing a story in Twine using its default story format for a very long time now but I've never wanted to publish my story using Twine since I felt it was only helpful in organizing my story.
I've looked for a game engine that could do what I've needed for well over 2 years now but my own shortcomings have made the task difficult. Just about ANY game engine could accomplish what it is I need, but I am NOT a programmer. I've learned several languages but am far from being competent with any of them and whenever I try to think for myself with the languages I know, my brain turns to scrambled eggs. Originally, when I first began writing my story in Twine, I thought Twine had limitations that made it impossible for me to create what it was I wanted within it. I know now that with some skill you can make some pretty fancy stuff with it. I think that I'd need to create my own story format to make the kind of game I would like with Twine however, and that's where my brain turns to scrambled eggs again. I'm hoping I can get some guidance and on where to begin and what kind of things I'd need to make in order to support the kind of game I'm making.
The kind of game I'm making would be part Visual Novel, part Text Adventure, part RPG and would be presented in the following manner:

(ignore the flavor text)
Here's a list of some features my game would need to function:
- Web Fonts; specifically Cinzel or at least a way to use Cinzel as the primary font.
- Text Color Coding; this would be needed to help the reader identify codex links of different types (people, locations, lore), as well as speech, attributes, and items.
- Codex; a built-in codex that the player can bring up with a click at any time and put away at any time, letting them resume where they left off.
- Inventory; some kind of inventory would be helpful but it would not need to be extremely in-depth. A simple listing of items you've acquired would be more than enough so long as the player can bring up this list and resume the story at any time, like the codex.
- Attribute Checking; some support for saving various character and item attributes as well as checking against them for success and failure when making choices in the story. This could be done in the background, though a Attribute Window and Status screen would be preferable.
- Adjustable HUD; the window containing narration would need to move or vanish according to what the player is doing. Sliding to the right to make room for the Attribute Window or sliding off screen completely for the Codex or Inventory.
- Saved History; the narration window should allow the player to scroll up to see the entirety of their current chapter including the choices they've made thus far as well as an option to view previously completed chapters with all the choices they made.
- Save/Load Functionality; the length of my story would make this a requirement. Multiple save files would be preferably.
- Character Portraits; the portraits I have are not heavily animated, but some support for animation would be needed as the portraits would slide on and off screen as characters enter and leave scenes.
- Sound/Music; self-explanatory.
I think that's about it.
The list must make me look like I'm over my head, and maybe I am. I've thought about giving up on several occasions, but what I've written for the past several years is very important to me and I'd like to present it to people in some fashion. I have the support of an artist, and I've tried to make up for the lack of programming with my own skills but I've discovered just how terrible I am at that particular area.
Regardless, if I must, I'll continue to try if someone here can help point me in a good direction.
Is Twine still a good option for me with my requirements?
Comments
For the "Codex": you'll can use the passage() function to store the player's current position within the story, and the StoryMenu to show the Codex:
Or something. You just need to write the control logic. There are JavaScript libraries for resizable/movable "windows" rendered as CSS elements, like JQueryUI. You'll pretty much need to use SugarCube if you want to include other libraries--I don't think it's impossible in Harlowe, though. Again, SugarCube includes a save system with multiple slots. The Saved History part won't be easy to implement, but it's possible through <<display>>, <<append>>, <<linkappend>>, etc. I will say that the scrollable history will probably present the biggest challenge for using Twine, but it's still not impossible by any stretch. SugarCube has audio macros for sound. Twine1.4.2 has image importing, but any version of Twine will allow images. Basic animations can be handled through either animating your own GIFs, or by simply using CSS animations and crossfading background images to simulate expressions changing or what-have-you.
I don't think you're as in over your head as you seem to think you are.
Twine is just an IDE for CSS, HTML, and JS. HTML5, specifically, is incredibly powerful and used to make games all the time. JS is one of the most versatile scripting languages out there, and CSS is super easy to learn and use. In short, I think you need to start here and focus on learning about web design in general, and then use Twine to simplify and organize your project.
If the player goes from one menu entry to another menu entry before returning the the last game related passage they can end up in the "Dreaded Endless Menu Passage Loop" ™.
(eg. selects Codex then Inventory before returning to the last game related passage.)
This comment in the How do I create a link that returns to the previous story passage? thead explains the semi-official method to get around the DEMPL issue if you decide to use the SugarCube story format.
note: The Basic "return from menu passages" handling for Harlowe thread demonstrates one way to handle the same DEMPL issue if you plan to keep using Harlowe.
Good catch, thanks.
I'll look into it as I continue writing, though programming has always been a bit beyond me. I haven't touched HTML since I was in high school and never got into JS.