Open-sourced Some IF code

So I can’t believe it’s been almost 2 years since I’ve posted on here. That doesn’t mean I’ve been idle, just not quite as productive as I’d hoped. So I’m hear to update anyone who cares with what I’ve been doing over the last two years, what I’m currently working on and planning and where I hope to be in the upcoming year.

Trizbort

So of course, many of you are familiar with Trizbort. I’ve made updates and fixes. Pulled in some PR’s that others have submitted. I’ve not created an official release in the last year and a half, but you can always get the latest bits from the repo on github and build it yourself if you’re so inclined. I hope to put out a build soon, just want to get a few more things fixed.

Code: https://github.com/JasonLautzenheiser/trizbort
Changelog: https://github.com/JasonLautzenheiser/trizbort/blob/master/changelog.md

IF Code

So recently, I also released to opensource a handful of Inform 7 games in various stages of creation. A couple that were released over the years as well as some that I’m working on (or had worked on). Some have been out there already, others I’ve kept private while I was working on them. I figured there is some good code and some bad code in there. Some good writing and some bad writing. But all of it can be educational in one way or the other.

The Games

Jack – This was my entry to EctoComp 2013 and was my first released game. Originally written in just 3 hours and still relatively new to Inform 7 it was severely lacking in several areas. The ending was rushed (due to the 3 hour limit), the story is shallow, and there are many unimplemented (or under-implemented) items and areas. Had future plans for a more complete release, but haven’t made a ton of progress over the years.
(source)(IFDB)

White Houses – This was my second released game for ShuffleComp 2014. An homage to Zork, where I got my start many, many years ago. I’ve been pretty happy with this one. I tried to implement the infamous White House of Zork with some slight changes and of course added my own story behind it. Again I planned to expand on this more, implement some more ideas and of course fix some bugs, other than a minor post-release and some code that you can see in the repo, I’ve not done much with it.
(source)(IFDB)

Tom – This was the working title of my very first game I wrote. I had gone through some tutorials of I7 and this was my first attempt. I was a bit over-ambitious with this one, as I had planned it to be a largish Lovecraftian tale. I implemented the first area, some cut-scenes (which I was actually quite proud of), and really tackled quite a few different I7 techniques that truly helped me learn the language. Never released and still a lot to do on it, but it is one that I’d like to get back to at some point.
(source)

Hornet’s Nest – This was my entry to IntroComp 2014. It got mixed reviews, but I was pretty happy with how it turned out. And being in IntroComp it was obviously incomplete. This is the one I’ve probably done the most work on since it’s initial release and really want to get it out there. I plan on working on this one and trying to get a release out there.
(source)(IntroComp Release)

Cragne Manor Room – This was my contribution to Cragne Manor. I created a small room with a small puzzle. This was a lot of fun to do and I got to talk to quite a few cool people during this process.
(source) (IFDB)


The rest of the games are very much very early in the development process. Some will probably never see the light of day and they were really just testing out some ideas. Others, I may continue to build and grow.


Lizards – Not sure where this one was going. (source)

Wolf’s Bane – This was my attempt at an idea that you were turning into a werewolf and but before you did you had to setup traps to capture your wolf-self and cure it. (source)

House River Styx – A buddy of mine bought an old house in a small town in Ohio called River Styx. It was originally used as a funeral parlor and it has a great history. I built out the floor plan, but wasn’t quite sure what I was going to do with it. That’s where it stands. Some day I hope to finish it as it has great potential. (source)

Hazelnut Jones – This was a play on the Indiana Jones story, but with a twist. I wanted to take the famous fedora hat and give it a spirit that possessed it. The PC viewpoint would switch from person to person as the hat changed hands. Haven’t taken it too far, but I think the story might be neat enough to eventually give it a shot. (source)

Grim – This was a comedy twist to the concept of the grim reaper. Initial scene has been roughed out, just needs polished and expanded on slightly but the real work is in getting the rest of the game mapped out and implemented. (source)

Easter Egg – This is my latest creation, started just a few days ago. Not sure I’ll ever finish this, but this was really just a way to re-familiarize myself with I7 and to do some practice. I might use this as test bed for random ideas. (source)

Hopefully someone will find this code useful. If you happen to have ideas and want to contribute to a particular game (or just fix bugs and whatnot) please feel free to submit pull requests. If you happen to like one of the ideas, feel free to take it and run with it (though maybe a little mention of the inspiration would be appreciated, but not necessary).

Trizbort v1.7

New version of Trizbort released into the wild today.  V1.7 has just a few small items in it.

Open maps from Web

You can now open Trizbort files from the web.  Ctrl-Shift-O or File -> Open Map from Web (Ctrl-Shift-O) will bring up a small dialog to enter in a URL to the map.  Trizbort will download it and open it up.   The file can then be saved locally or any other function can be performed on the file.   The URL will also be included in the recent files list so you can open it again later.   Be aware that if you close Trizbort while the map from URL is open, it will be re-opened again when you open Trizbort if the feature to load the last opened map is enabled.

Small Object Updates

Another small change is to the objects section in the room  properties dialog.  You can now indicate whether an object is being worn instead of carried.  In I7 there is a difference.  It is treated as being carried in other languages.  This is indicated by putting a [w] at the end of the object text.

Also in I7, an object can be a “part of” another object.  Again this is indicated by indenting the child object under the parent and adding [h] to the end.  Otherwise, it will be treated as being contained by.  Again in I7 there is a difference.

If other languages handle these as I7 handle them, please let me know as I’m not versed in the other languages beyond the basics.

Other than that, there are just some minor bug fixes and code refactoring.

New Update process

If you are running 1.6.1, you have a new option to do an update.  Under the Help menu there is an option for Check for Updates.  This will detect that v1.7 is available and will prompt you to download and auto-install the new version.

Of course, if you prefer or are running an older version, you can still head over to GitHub and grab the latest release zip file and unzip as normal.

As always, any problems, questions or comments, please let me know here or over on GitHub.  Enjoy!

Trizbort v1.6.1 – Minor Release

Just wanted to throw out a quick little release with a few quick bug releases.  You can find out all about the new version on the release page.  Or feel free to download the latest version and unzip as usual (more on a change to the process in future versions below).

Nothing too exciting in those a few lingering bugs were fixed and one that was introduced with the v1.6 release that affected the most recently opened maps menu.  Sorry for any inconvenience that may have caused.

Two new features.

First, room subtitles can now have its own font and color.  This is another step in my quest to make Trizbort as configurable as possible.

I’m working on making it more flexible and at the same time I want to improve the interface to make those changes so it becomes more intuitive on how to make those changes.

 

 

 

 

 

 

 

 

 

Secondly,  I’ve added a menu under the Help menu to allow the user to Check for Updates.  If an update is available, it can automatically download the newest version, install it and restart Trizbort right where you left off.

As always, the install is simple, so you can still just download the zip file on the latest release (as you’ll need to do with this version) and unzip it to a location of your choosing.

Please let me know if you have any issues (older versions are always available on GitHub if you need them).  Any bugs or requests can be put directly on GitHub or feel free to add comments here.

Enjoy!

Trizbort v1.6.0

Been a bit since we’ve had an official release of Trizbort, but pleased to finally bring this to you today.  v1.6 drops today and as usual you can get the bits at https://github.com/JasonLautzenheiser/trizbort/releases/tag/v1.6.0 There you can read all the release notes (or look at the bottom of this post) and download the zip file which you can just extract in the folder of your choice.  Everything needed to run should be in there.

As usual, if you find any issues or have suggestions, please create an issue on Github as that is the easiest way for me to track things.

Quest Support

Trizbort now supports exporting to Quest thanks to @ThePix who was gracious enough to provide a pull request.  This now brings the list of supported languages to 7 (Inform 7, Inform 6, Alan, Hugo, Zil, Tads, Quest).

Full release notes:

Added

  • check for new versioned files and show warning when loading map (#353)
  • Trizbort now will detect changes to loaded map from another application and ask to reload the map (#365)
  • Added export for Quest (Thanks to @ThePix for this) (#392)
  • Added option in AppSettings to show the full file path in the main window caption.
  • Can now set a default room shape for a map in Map Settings (#93)
  • Can add a link to reference another room from a room (done through room properties). Ctrl-Click on the room with the reference will go to the room being referenced (#370)
  • Color picker in map settings now allows setting multiple colors at once. Just Ctrl or Shift click on the colors to select many and all can be set to same color at once (#108)

Fixed

  • fixed naming consistency between context menu and main menu and room shape names (#356)
  • opening zoom is a bit more accurate and better handles margins (#357)
  • Fixed issue where Trizbort wasn’t saving the last loaded project if that map was loaded from most recent maps menu (#364)
  • Minor adjustment on alignment of in/out text on rounded and octagonal rooms. (#378)
  • fixed error with room property dialog and rooms shapes. (#394, #388)
  • copy of room now copies the subtitle.
  • default object text color was not respected if object text was inside room and no room specific object text color was chosen. (#402)

Changed

  • Refactored the copy / paste giving some code optimizations and fixing some copy bugs where some properties were not getting copied. (#379, TRIZ-145, TRIZ-152, TRIZ-47)
  • Application Settings has been refactored. App Settings are now stored in an appsettings.json file in the application folder. The legacy settings.xml stored in the user folder will be read in if it exists and there is no appsettings.json file. This simplified the code and allows for easier management as we add new options. Map settings still stored in the map file.
  • moved the revisions.txt to a more standard changelog.md file.
  • added scrollbars to the Map Settings -> Description and History inputs. (#390, #391)
  • App settings are now saved on an affirmative close of the app settings dialog.

New Authoring System Released – Adventuron

I just received word from the creator that the Adventuron system is now available.  I’ve not played with it yet, but I was contacted a while ago by Chris Ainsley, the creator in regards to an interesting feature he had in the works.  His was adding the ability to import Trizbort maps into his system.

For a long time, Trizbort has had the ability to export it’s maps to different languages (I7, I6, Tads, Zil, Hugo, …), but this is the first case that I’m aware of that a system imports a map for it’s own purposes.  Pretty cool stuff and I’m glad to see Trizbort being used out in the wild and in a unique way.

One thing this got me thinking about in regards to Trizbort itself, is the format of the Trizbort file.  While I have no inside knowledge, I suspect that Adventuron is simply reading the file and parsing it internally.  This will couple it very tightly to the Trizbort files.  While I have no current plans to change the format of the file, doing so in the future could perhaps break this system or others.

So perhaps the time has come to start thinking about breaking out the Trizbort engine into an API that a user could hook into their software, website or whatever that will allow for me to change the format at my hearts content (as long as I update the API as well.)  That might be an interesting refactoring that could make Trizbort more extensible and protect systems from file format changes.

Regardless, I just wanted to share the announcement out there and encourage you to take a look at Chris’ system.  I would also be interested to hear if anyone has some other interesting uses for Trizbort and it’s files.

Trizbort v1.5.9.9

Hey everyone, new release today in celebration of Independence Day here in the United States on the 4th.  Or really, just an excuse to get a few things that have been lingering in the code into an official release.

As usual, you can get the bits at https://github.com/JasonLautzenheiser/trizbort/releases/tag/v1.5.9.9

One feature I’m kind of excited about, but still in its infancy, is the new validation menu.

 

 

 

What does this do?  Well when checked it will display rooms with a red X over them if it fails any of the selected validations.  For example, above we are checking for dangling connections, those connections that are connected to a room on only one side.   Below is a portion of a map showing this in action.

 

 

 

 

 

Why did this come about?  I had a user email me asking if something like this was possible.  They were actually pulling in the resulting Trizbort map into a yet undisclosed application they were developing and something like this would be beneficial to them to make sure rooms had the features they needed for their software.

Currently Trizbort only supports the four validations as shown in the menu.  Others are on the table and the thought of allowing the user to define others themselves (for example, looking for certain text in descriptions or room titles) has been kicked around.

Trizbort doesn’t stop the user from saving the map or exporting to your favorite supported IF language, it’s purely for informational purposes.  Hope people find this useful.

As always, thanks for the many users who have found bugs, made suggestions or simply sent a word of thanks for the continuing work being done on Trizbort.   A special thanks to Andrew Schultz for his continued testing, support and many pull requests into the code base.

 

Minor Trizbort Update to 1.5.9.7

A quick little update to fix a few small bugs that were found in the last release.

 

https://github.com/JasonLautzenheiser/trizbort/releases/tag/v1.5.9.7

First bug was one introduced in the last version in regards to the Automapper.  It seems a new feature I added to handle the EXITS command in a transcript, broke the automapper.  I removed that feature temporarily until a proper fix could be found.

A second bug was fixed that has most likely been around for awhile where if you imported a map that was created with an older version, one that was created prior to my beginning development on Trizbort, there was a potential that the Inform7 Export code would not be generated properly.

 

Trizbort Updates

Well it appears I’ve failed to update here for quite some time.  While movement on Trizbort has been slow in 2016, I have put out two releases since my last post here.

If you’re just interested in downloading the bits, head over to http://www.trizbort.com and follow the links.   As always, feedback is appreciated.

Version 1.5.9.6

The latest version, released on 1/7/2017 fixed a few bugs, but added one big feature that I’ve found to be very helpful.  The find feature (Ctrl-F) searches rooms, searching the room name, subtitle, objects and description.  

find1

 

If multiple rooms are found they are all highlighted and you can cycle through them using F3 / Shift-F3.

find2

The mini-map is updated with the results as well, so if they results are spread out across a large map, you can see where the results are located.

find3

Version 1.5.9.5

Prior to this latest release, another small release was done back in August, but I failed to properly announce it here.

Command Line Improvements

The refactoring of the command line parameters were made to allow Trizbort’s use in batch files a bit easier.   Most command lines deal with with saving and exporting maps.  For example, if you have a transcript of a game session that you wish to make an automap of you can simply do something like this:

trizbort –automap zork1.txt –quicksave zork1.trizbort –exit

This reads in the zork1.txt transcript, runs it through the automapper and then saves the resulting map to zork1.trizbort and then shuts down.

You can now also automate the exporting of map files to the differing source files.  For example:

trizbort zork1.trizbort –zil zork1.zil –exit

This will load the zork1.trizbort map, export it to ZIL format in the zork1.zil file and then exit.  Currently Trizbort can export to Inform7, Inform6, Alan, Hugo, Tads3 and Zil formats.

Doors

Another nice feature here is the addition of doors.  Doors are just a special type of connection so these are setup in the connection properties setting.  Currently doors are only supported in the export for Inform7.connection-doorsconnection-doors2

For full list of these releases or any older release, visit http://www.trizbort.com for full details.

 

Trizbort 1.5.9.4 – April 2016 update

So after a long hiatus, I’ve released another update of Trizbort.  This update has many updates that have been sitting out there for a few months now.  Thanks to Andrew Schultz once again for many of these changes as he was a huge driver for many of them.

You can see the full list of changes on the release page at http://www.trizbort.com or directly from GitHub at https://github.com/JasonLautzenheiser/trizbort/releases/tag/1.5.9.4

As always, let me know if you have any suggestions, requests or bug reports either here or create an issue on GitHub.

Enjoy