Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jeremyf/twn
https://github.com/jeremyf/twn
Last synced: 28 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/jeremyf/twn
- Owner: jeremyf
- License: apache-2.0
- Created: 2020-08-23T19:23:04.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2021-01-15T21:43:24.000Z (almost 4 years ago)
- Last Synced: 2024-10-14T19:43:03.778Z (3 months ago)
- Language: Ruby
- Size: 220 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# TWN
A Traveller and Stars without Number world generator and glossary.
## About
Traveller and Stars without Number both have world creation processes. Each generating a different and somewhat overlapping overview of a system.
The goal of TWN is to use both processes to generate an even more descriptive world.
I envision that you should be able to feed in an already existing Stars without Number system and output the remaining Traveller attributes. Those generated Traveller attributes would be informed by the Stars without Number attributes. In other words, if you gave a Stars without Number system that has a Tech Level of 4, then the Traveller attributes that feed into Tech Level would need to be able to create the conditions so you could get that Tech Level.
## Modularity
TWN comes with four packages: Core, Factions, Security Profile, and Stars without Number.
- Core
- The world generation from the Traveller Core Rulebook.
- Factions
-
The faction generation from the Traveller Core Rulebook. The faction generation depends on portions of the Core module.
- Security Profile
- The security profile comes from Journal of the Travellers' Aid Society Volume 5. The security profile generation depends on portions of the Core module.
- Stars without Number
- The Stars without Number module comes from Stars without Number When using this module, if you first generate Stars without Number elements, those generated elements impact the generation of Core elements. In this way, if you already have a Stars without Number world, you can overlay Traveller information onto that world. The Core overlay will conform to the constraints established by the Stars without Number module.
I do plan to add more packages as I find more extensions for UWP.
## Example
```
A0C0857-15 RTC De A {FNo9 FNo9 FNo6} {S8D9-3 Pe Te} {#N1 #M0}
||||||| | | | | |----------/ | |---/
||||||| | | | | | | +- SWN Tags
||||||| | | | | | +- Security Profile
||||||| | | | | +- Faction tags
||||||| | | | +- Travel code
||||||| | | +- Trade code(s)
||||||| | +- Bases
||||||| +- Tech level
||||||+- Law
|||||+- Government
||||+- Population
|||+- Hydrographic
||+- Atmosphere
|+- Size
+- Starport
```
The segments enclosed in `{…}` are additional non-core UWP codes. Each UWP module is contained within separate `{…}`.
- Faction Tags
- Each faction tag is four characters. Character one (1) is always
F
. Characters two and three (2-3) represent the support level. And Character four (4) is the government level. In the above example,FNo9
is a Notable (No
) sized Impersonal Bureaucracy (9
) faction. Faction tags are from the Traveller Core Rulebook. -
- Security Profile
- Each security tag has a leading segment (e.g.
S8D9-3
) and any number of tags (e.g.Pe Te
). The segment starts with anS
, to signify Security. The next three characters represent the security presence for the planet, orbital, and system. The digit after the-
is the security's stance. The stance may be prefixed with aB
, representing balkanisation. The next characters are the security codes. A security code is two characters. Multiple security codes will be separated by spaces. The security profile comes from Journal of the Travellers' Aid Society Volume 5. - SWN Tags
-
Stars without Number provides a rich set of tags for describing a world. Each tag is 3 characters. Character one (1) is always#
. Character two (2) is the first letter of the tag, character three (3) is a hexdecimal value indicating the number of tagsthat start with the same character and are alphabetically sorted before the current tag. For example the#N1
means it's the second tag that starts withN
. In this case#N1
means the world tag "Nomads."
It is relatively simple to add new
## Installation
Add this line to your application's Gemfile:
```ruby
gem 'twn'
```
And then execute:
$ bundle install
Or install it yourself as:
$ gem install twn
## Checklist
This is a scattering of tasks, some complete and some unfinished. It is not representative of the complete set of work. Instead its my scratchpad.
- [ ] Generate a UWP short-code (without coordinates) for https://campaignwiki.org/traveller/
- [X] Add Traveller Trade Codes
- [X] Ensure attribute entry can be fetched by `uwp_slug`
- [X] Verify that each Twn::Attribute has a table
- [X] Verify that each Twn::Attribute table's key is a `uwp_slug`
- [X] Create UWP to Roll map for each attribute
- [X] Add SWN tags
- [X] Tags are things to roll first, as they may influence UWP
- [X] Tags apply Twn::Constraint
- [ ] Work on induction of Traveller traits from SWN entries
- [X] Create concept of Composite Attribute; The SwnWorldTags is a composite attribute, in that it has two implicit SwnWorldTag objects associated with it. I see something similar as necessary for the Trade Codes.
- [ ] Consider how to render a Row
- [ ] Add a UWP converter (e.g. print out the UWP's expanded information)
- [x] Add Traveller Faction generation
- [X] Handle exception on occassional non-reconcilable intersection of constraints.
- [X] Add constraints to Row builder and apply those constraints at Attribute initialization.
- [X] Extract a ".roll" macro that captures the results
- [X] Constraints should apply to composite attributes? They do
- [ ] Add concept of "15+" to account for greater law levels.
- [ ] Add generator to consider location in hot/cold temperature band
- [ ] Implement the conceptual modules identified in the [Modularity](#modularity) section.
- [ ] Implement a `:contrained_by` concept. When a value is
`constraint_by` by something, it will hook into the registry and
add those contraints. I suspect this to be a major refactor.
(I don't want :Core to know about :SWN, so :SWN would have
constraints applied to it). **This is a nice to have feature.**
- [ ] Review [Freelance Traveller/The RICE Archives - Doing It My Way - Extending the UWP - Government](https://www.freelancetraveller.com/features/rules/expuwp/govern.html)
- [ ] Reviewing Mongoose Traveller (v2), the Trade system would benefit from a Commerce Atlas.
- [ ] Determine how to overlay T5 into Mongoose