GithubHelp home page GithubHelp logo

jasonlautzenheiser / trizbort Goto Github PK

View Code? Open in Web Editor NEW
128.0 21.0 35.0 14.6 MB

Trizbort, the Interactive Fiction Mapper

Home Page: http://www.trizbort.com

License: Other

C# 97.51% Perl 0.94% Batchfile 1.29% Python 0.26%
interactive-fiction mapping c-sharp winforms inform-7 inform-6 tads3 zil adrift inform7

trizbort's Introduction

Trizbort

Trizbort is a simple tool used to create maps for interactive fiction. First developed by genstein back in 2010, he continued to update until March, 2013 when he open-sourced the code and uploaded it here to Github. Fast forward to 2015 when I picked up the development and along with Andrew Schultz (focused on documentation and testing) we continue to improve this great software. Follow our blog for announcements and updates (https://lautzofif.wordpress.com/tag/trizbort/)

Mark stale issues and pull requests

Links

Maintainers

We thank all our contributors for all the hard work whether pull requests or simply bug reports. Special thanks to the following for taking the time to contribute features and bug fixes.

  • andrewshcultz - much testing, features and bug fixes. Also updating the documentation.
  • Tymian - Bug fixes and work on copy/paste functionality
  • ThePix - work on the export to Quest
  • matthiaswatkins - for much work making the automapper faster and more reliable
  • genstein - obviously thanks for the intial development and all the hard work that went into Trizbort up to the point I took it over.
  • dfabulich - fixed some issues in documentation
  • taradinoc - tweaks to the ZIL exporter

The primary developer on this is Jason Lautzenheiser

Contribute

Feel free to dive in! Open an issue or submit PRs.

Trizbort follows the Contributor Covenant Code of Conduct

License

MIT

Special notes

This software uses PdfSharp, copyright (c) 2005-2007 empira Software GmbH, Cologne (Germany). See PdfSharp.License.txt.

Special Thanks

Resharper

trizbort's People

Contributors

ainslec avatar andrewschultz avatar berkeleynerd avatar dependabot[bot] avatar dfabulich avatar genstein avatar hlabrand avatar jasonlautzenheiser avatar matthiaswatkins avatar michaelbub avatar mkhubbard avatar nyun0 avatar taradinoc avatar thepix avatar tymian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

trizbort's Issues

Create a legend on the map.

Could have features of what to include:

  • regions and their colorings
  • connection or room border style meanings
  • individual notes

Context menu button sometimes disables if used exclusively

This is an odd one. When I use the context menu button with a room highlighted, it's sometimes greyed out.

I'm not able to get this reliably if I right-click on a room and then use the context menu. It's only when I use the context-menu key between the right control and right windows.

Test case: 1st version of manor-of-speaking.trizbort
Click on Stumblebum Lane
push context menu key, then escape
ctrl-(numpad 7)
push context menu key, then escape

If you go around the loop at the top, the context menu will eventually disable.

This is easier to produce with a new file than with one you've been tinkering with. So it looks like something's not getting initialized.

https://raw.githubusercontent.com/andrewschultz/trizbort-maps/master/others/manor-of-speaking.trizbort

Should "p" remove coloring from a line?

  1. create a room
  2. ctrl-down
  3. click on connector and change the color
  4. push p when on the connector

The line color does not revert to the default. It's plausible not to do this, but should we? (Either way I want to note this in the docs.)

middle-line test adjusted inconsistently

Look at text-offset-* in succession (open them, then alt-f-r-3)

Note the top middle offset is only adjusted vertically. But all others are adjusted vertically and horizontally.

I'm inclined (long-term) to go towards having an option to make text offset diagonal or linear. I also think that adjusting the middle text diagonally is not as good as just adjusting it up/down or left/right. But there's a small inconsistency either way.

Let me know if these would be better off at Trello.

Curved connection lines

Either automatically warp around other rooms so connections don't go through unrelated rooms, or allow to adjust curves manually.

cut/paste of rooms+lines broken in 1584

Cut/pasting more than 1 room + 1 line causes trizbort to seem to paste blank borders and room text.

Reproduction:

R, ctrl-down, enter to create 2 linked rooms.
ctrl-A, ctrl-V and observe the second room pair has no visible border or room text. Though if you click on them, you see the room text and that there is a solid border.

This seems more likely to occur with default colorings.

W, expanded to ctrl-W/shift-W-alt-W?

Now that W flips the objects in the room, it might be neat to allow flipping

  • room names with ctrl-W
  • formats/fills with shift-W
  • regions with alt-W

Samples directory

I wanted to check on this before creating it.

https://github.com/andrewschultz/trizbort-maps/tree/master/others has 2 files I think are decent candidates for a sample files suite. I don't know if that's enough in quantity to start. I also wonder if we want warnings for slasher swamp, or we'd prefer a more neutral game (it has violence etc.)

I would like to write an HTML file linking to each file with a legend to describe what formatting I used where and why. For instance,

  • Slasher swamp: dashed borders = places to search. No borders = to the forest maze
  • Luster: Orange = power source that lets you by the train (other orange). No borders/lighter green = loop around. Dashed borders = places where you get a gem.

Also do we want just the .trizbort versions or do we want PNGs/PDF too as well? Maybe even PDF walkthroughs where text is glued on to the maps?

I'm also interested in other game candidates that haven't been done yet. Right now I'm looking at Excelsior, from the 2014 IFComp.

ParserComp had a few good games to map, like Chlorophyll, Adventurer's Garden, and Mean Streets (which David Welbourn already did, but we can show regions and of course refer to his map.)

I'd like to give a good sample of low-middling games to show how frustration can be alleviated quickly, but I'd also like to do some good games like Endless Nameless (I am nearly done with that game and map. I still have to kill the dragon) and Chlorophyll.

Allow for complete navigation of map with keyboard.

Some thoughts @andrewschultz had previously

The "enter" key to adjust room properties is awesome. It works for lines, too, but the problem is, I don't see any way to use the keyboard to get to a line.

This is nontrivial and imperfect. If a room has two exits going west, say, then you just have to guess a bit. But here are suggestions to implement this.

  1. ctrl-shift-(direction or numpad key). The limitation here is that there is no way to determine which of 2 ways you'd like.
  2. If you have a room as an anchor, F7 or F8 to go clockwise or counterclockwise from a line. The problem with this is that if you click a line straight off, you won't know which room to move from.
  3. There's also the special case of one-way lines. In some cases it may clarify something in (1), e.g. room a goes east 1 way to room b, room b goes west to room c. (Or, an in/out or up/down passage has to go SOME direction.) Do we want to ignore them or deprioritize them? Do we want an option to do so? Either way, this may be more work. It might not be worth that work, but we need to be aware of it.

Also, once you are on a line, there is no good way to leave it. I think simply a space work. Trizbort could keep track of the last room you were at, and if it is connected to the line, you could go to the other one.

Have an individual style setting for room subtitle.

Currently the room subtitle text's style reflect the line text style. The user may want the subtitle text bigger or smaller for some reason, or in italics. Another entry in tools:map settings:colors and fonts.

"History" text exported to source code.

One suggestion is that the history text could be exported to create an about type command

chapter about

abouting is an action out of world.

understand the command "about" as something new.

understand "about" as abouting.

carry out abouting: say "HISTORY STRING";

are there other options that make sense for the history text in source?

Allow for creation of people, supporters and containers

I've seen a few suggestions fly on this:

Statue
Table -
     Flowerpot o
          Bouquet

Platform -
     Chair -
          Santa Claus +

Large nesting doll o
     Medium nesting doll o
          Small nesting doll

Charles +
     Wallet o
          Money
          Credit card

where,

+ is a person
o is a container
- is a supporter. 
No symbol is a thing.

Ability to redact text in rooms.

The reason for this is perhaps you want to create a map (or portion of), without text so that the layout is visible but no hints are given based on the room names and objects shown.

Artifacts in Room Properties::Colors on re-coloring

If we change the colors twice we can see clear artifacts in Room Properties::Colors.

  1. create a room
  2. pick a new color in any of room fill, second border, etc. Make sure the mouse is not over it. (for his example, blue)
  3. change that color again to something different. (green)

Note there is a blue border around the green. If we highlight the green, the blue border goes away

Templating / snippets feature

Allow the saving / loading of a group of entities. These could be inserted (perhaps multiple times) into an existing map as a whole and then manipulated individually. #55

Could encourage the sharing of templates among users (perhaps setting up some sort of template library)

Another usage of templates would be the saving of properties on entities and not necessarily the entities themselves. For example, you could set up your regions and their colors one time, save as a template and then load them into your current map. (Perhaps this is a separate feature, but it can start off here)

Exception reporting for a map.

Particular cases are a room with 2 other rooms in from it, or out, or up or down. This may also mesh with error checking where 2 rooms are the same compass direction from another, or if there is a room with no exits.

Command line option to start automapping

Start automapping from the command line with a specified script file, e.g. trizbort curses.trizbort -a curses.txt

  • It might be nice to be able to specify an automapping configuration file as well.
  • Or at least a separate option to be able to start processing from the end of the transcript.

Migrate Settings to the System.Configuration namespace

Do we know why Genstein hand-rolled this functionality? The Settings.cs file duplicates provided (and optimized) features of the System.Configuration namespace. It would be easier to parse, maintain, and update if it were standard.

Should app mention BMPs are 32-bit?

Saving as a BMP gives a 1000x1000 image at 4 meg. I updated the docs to mention this.

Is it worth saying BMP (32 bit) instead of just BMP in File->Export->Image and Tools->App Settings?

Automapping: can we ignore game title as a room name?

A part of the Trizbort documentation reads (or used to--I updated it to sound less harsh) "Trizbort's not very bright. It may think the name of the game is a room you're mapping. If so, feel free to delete the room name."

I haven't run across this, but if anyone has more than once, would it be useful/worthwhile to have a "ignore text" function?

Line text color has no effect

The line text color in tools:map settings:colors and fonts has no effect.

map-settings-colors.trizbort shows this, and you'll also see the problem if you don't set the line color.

Repro:

  1. create a new document with red line text
    2 R, I, ctrl-right arrow

Grouping of elements.

Group of elements would allow the selection of multiple rooms / connections on the map and have them grouped as one virtual entity. Once grouped, anything done to the group is essentially done to each entity.

For example, you click once on grouped elements and you can move the entire group (as a whole) to a different location on the map.

Essentially this is the same as if you had selected multiple elements, but allows for the groups to be saved with the trizbort file so they are loaded up each time.

Another benefit would be the taking of groups and saving them as snippets or templates #54

Explicit exit markup in script files

It would be useful to have a script command, something like 'trizbort exit north' that would tell the automap that there is an unmapped or blocked exit to the north that would warrant further exploration later. Maybe also 'trizbort noexit north' to have the automapper delete erroneously detected exits.

Trizbort specific commands - prefix

Trizbort currently parses for 'see' and 'region'. I don't know of any situations where this might cause issues due to these verbs being used in-game, but perhaps a standard trizbort prefix for trizbort commands in a script file might make sense to preclude any possible ambiguity: 'trizbort see dragon', etc.

Export I6/I7/TADS to Notepad instead of saving to disk

I've used the 'export to I7' option before (as I use Inform, but this applies equally to all exporting options, I believe), but after the first save, I don't necessarily want to overwrite the story.ni file (or save it in another location) as I may have worked on it already.

So one feature I'd request is instead of exporting I6/I7/TADS source to an appropriate file, export the code to Notepad (or more properly, the system's default text editor) instead. This way, I can copy/paste snippets into my existing projects without having to save another copy of the code to disk unnecessarily.

name with dashes in runs outside box

  1. create a new file
  2. make a room
  3. call it Accardi-by-the-Sea (yeah, I'm mapping Beyond Zork)

An obvious workaround is to make by- the-Sea, but that's a bit awkward. Maybe we can find a way to line-break for dashes as well as spaces?

"Fill" in tools:map options seems obsolete

I wasn't able to get this to have any effect even when starting on a new project, or creating a new region.

For instance, if you change the default room color, it appears in the next region. But the same doesn't happen for fill.

Repro:
Open map-settings-colors and create a new region. Note tools:map settings:colors and fonts has red fill and orange text, but a new region only gives orange text.

Other shapes for rooms

Round rooms are an obvious choice, but could include more oddly shaped rooms (diamond shaped, free-hand drawn)

This would obviously mess with the ports for connections....

  • Do we keep a bounding square around the room to handle the ports
  • or do the ports get adjusted to match the room shape.

Adjusting whitespace in pdf/png

Currently the whitespace in any pdf/png is 800 pixels = 11.11 inches at 72 DPI.

This seems excessive especially with small maps--a PDF looks shrunk & it's not trivial to cut it down, though CoherentPDF can.

Would it be easier to offer "smart margins" like the following:

each horiz margin = max (100 pixels, 10% of width)
each vert margin = max (100 pixels, 10% of height)

Or let the user choose margin size?

While CoherentPDF is available, the calculation involved makes margin trimming nontrivial.

ctrl-arrows doesn't detect small rooms

I have a fringe case where Trizbort does not detect rooms already there on ctrl-arrows. It only occurs if the room is too close.

Basically if you create a room and shrink it to 1x1, then create another room the same size with 1 grid-square space between them, and hit ctrl-right, Trizbort creates a new room.

2 grid squares' worth of space, and Trizbort is okay. But 1, it creates a new room. Maybe the code is trying the wrong way to exclude connecting a room to itself.

This is a general problem with detecting stuff close by. If you hit ctrl-up at a thin wide room just below another thin wide room, you'll get the same result.

This is enough of a fringe case that I'll wait until my next docs/testing drops for a full example, but the file that shows it most clearly is small-room-ctrl-arrow-test.trizbort.

Tidy lines

It would be useful if, say, ctrl-t tidied up connections. Let's say that room A is left of room B. There is an in/out connection. But I want to move A to the right of room B, because I shifted the rest of the map around.

The resulting line gets a bit warped, and while rotating it is an option, it's very fiddly. Especially if the line has a special style.

It would be easier for the user to save the line style, create a new line between the connected room as with the "join" command, then apply that style.

I've found I shift in/out connections around a lot because I don't know where they go at first. They're often on diagonals. So this is obviously a feature, and lots of games could get by without it, but it's really nice when it's there.

Swap objects feature

I would like to swap room data. If you highlight 2 rooms it could be done. Names would remain the same. But if you selected the swap function, it would swap objects between the two rooms. This would be handy as your designing new maps and you are still figuring out where things go.

Can we save app dimensions on close? (enhancement)

While testing trizbort with my new batch script, it kept reopening at 632x477, which made it difficult to read the text etc. I tried to resize/maximize it but it kept bouncing back.

I think this would be useful for users in general, too. I know the size of the window I want depends on the map I'm using.

Making a testing folder?

I'd really like to make a testing folder here. Maybe this is too ambitious, but here are my thoughts.

The folder could contain both transcripts and game procedures for automapping. And it could also have TRIZBORT files (or a zip containing them) along with a small test procedure document. These would mostly be unit-testing, at least to start. For instance, room_fill_examples.png and border_styles.png both come from basic unit test files, but we could do more, such as font name or color testing.

Feature: implement alignment of SSE etc. exits

The Gemstone Warrior map just sent in the samples might benefit from an "align" tag e.g. the passages south from room 12 are all a bit angly. It would be neat if they could be made straight-vertical.

Ability to mark part of a script parsed

I tend to play for a bit, automap out an area, then edit the map to add notes, remove unwanted room links that creep in due to teleports, move rooms around, etc. This is great except that if I re-open trizbort with the same script file and try to continue where I left off, it parses the whole script file again, destroying all my edits. I can alleviate this by using separate script files for each session, but it would be nice to be able to have just one. I'm not sure how to allow this, maybe have an in-game trizbort command 'mapped' or something that the automap would scan for the last instance of and only start parsing afterward. I could work on implementation, if you think it would be worthwhile.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.