Code Monkey home page Code Monkey logo

tts's Introduction

Tabletop Simulator Mod for Star Wars: Legion

CI

This project is a community-contributed open source mod for Tabletop Simulator, emulating some features and game play of Star Wars Legion. It is periodically updated to the Steam Workshop.

Star Wars: Legion and all related properties and text are owned by Fantasy Flight Games, Lucasfilm Ltd., and/or Disney.

Screenshot of the Game

Getting Started

If you're brand new to either Star Wars: Legion, or playing on TTS, Ben VanDonge (also known as "Mbweha" in various online communities) has a series of tutorials on YouTube that are great resources. We highly recommend viewing before being more involved.

Contributing

As a community run project, artwork, scripting, table design and more is a 100% volunteer project, and we could use your support! You will need the following tools to make most (but not all) contributions to the mod:

  1. A Git or GitHub client to make copies of this repository.
  2. NodeJS
  3. Tabletop Simulator

You'll notice we do not store the "save file" (JSON) in this repository, as historically that made concurrent edits and collaboration much more difficult: instead we have a series of scripts that "compile" it on demand from individual scripts and objects.

WARNING: Currently only Windows-based development is fully supported.

Once you've cloned the repository, you can build the mod:

# Install all NodeJS required dependencies.
npm install

# Creates a symbolic link to your TTS save folder, and compiles the mod.
npm start

For subsequent updates, you can just use compile on-demand:

# Files in "mod/**" are combined and output in "dist/" (linked to your saves).
npm run compile

# Optional, instruct TTS to reload automatically.
npm run compile -- --reload

If you make any edits to the save file directly, you will need to reflect (extract) the changes into the mod/** folder:

# This is a rarer workflow, but still supported.
npm run extract

Please file a bug if any part of this process does not work as expected.

Join the Community

Currently our only support channel is joining The Legion Discord (TLD) and using the #tts-chat and #tts-bugs-and-feature-requests channels, which are open to all players.

Support Channels

Frequent contributors may be invited to a private Discord.

tts's People

Contributors

aldaranmoses avatar ben-lear avatar bgmoore30 avatar dankraus avatar dependabot[bot] avatar dicewrench avatar jackparkes1 avatar matanlurey avatar nashjaee avatar ryanmg avatar tieren31 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

tts's Issues

Consider movement "hints" with terrain/unit interaction

Is your feature request related to a problem? Please describe.
One of the complications of Legion, especially in TTS, can be abiding by movement rules. Obviously TTS is a simulator, but we should try to offer as much information/hints as possible to make the experience easy and fast.

Describe the solution you'd like
Just like there are range "hints" (i.e. tells you the distance from your unit leader to another unit), I'd like to consider movement "hints". The idea here would be:

  1. Show an indication where a movement would be difficult.
  2. Show an indication where a movement would be impassable.
  3. Show an indication where a movement would be hazardous.
  4. Show an indication where a movement would require climb/clammer.

For example, you select Han Solo, activate him, and press Move. Immediately you see a floating indicator that the barricade next to him would be a difficult move to move over, and that the FD Laser Cannon next to him would be impassable to move over.

We could go further and try to understand rules like Unhindered, Expert Climber, Jump, etc, but I think the most value possible will be being able to remove the ever-growing text list at the bottom right of how different units interact with different heights of terrain, and instead:

  1. Encode each unit with an approximate height
  2. (Optionally) Encode terrain pieces with height/terrain type

Not all maps would have to take advantage of (2), it would be optional.

You could imagine, for example, some scatter crates being

DESCRIPTION:

  COVER: LIGHT,
  HEIGHT: 0.5  

This idea needs more fleshing out, of course - mostly filing to discuss.

Deleting an objective token with range visible crashes the game

Describe the bug
Deleting some tokens, such as the objective token, when the range bubble is visible, causes an infinite loop/crash of the game that is non-recoverable.

To Reproduce
Steps to reproduce the behavior:

  1. Move an objective token to the table (i.e. from the stack)
  2. Press the "R" side button to display the range bubble
  3. Delete the objective token

Expected behavior
The token is deleted without causing crashes


I actually have a fix already, and am filing this mostly for posterity.

Cohesion bubbles on trooper units are too large, by about quarter of an inch

Describe the bug
Cohesion bubbles on trooper units are too large, by about half/quarter of an inch. As when you pull up the speed 1 template it does not reach minis that are at the edge of the bubble

To Reproduce
Steps to reproduce the behavior:
Open cohesion bubble on a trooper unit, only tested on basic rebel trooper with no upgrades thus far

Expected behavior
Should be about quarter of an inch smaller

Screenshots
If applicable, add screenshots to help explain your problem.
image
Picture also in TTS chat in case that one doesn't work

Desktop (please complete the following information):

  • OS: Windows 10

Additional context
Add any other context about the problem here.

Linting / Style guide for LUA code

Is your feature request related to a problem? Please describe.
Code needs visual and stylistic constancy throughout. A defined project style guide, as well as auto-linting, will go a long way towards helping us achieve that.

Describe the solution you'd like
Research and present linting options to the development leads for approval. On approval

  1. implement linting system into codebase
  2. Document how to set up linters in the IDE
  3. Develop a styleguide outlining current best practices.

Range "tokens" that can be added and checked ad-hoc

We've had a number of requests to be able to do range band checks from a variety of places (think mines, objectives, non-leader miniatures). We might want to consider a "range" token that allows spawning and checking range from an arbitrary location.

Scripted range labels are often wrong

Describe the bug
When using a range bubble (i.e. often for attacking or otherwise checking range), the range "bubble" that appears over other units often mis-reports (i.e. is clearly outside of range 3, but says "3" anyway).


I am adding Lacks Details, as I would like to see more information, if necessary, in which cases this happens (is it seemingly random, is it based on terrain height, is it certain models, etc), and Severity: Major, as, combined with #3, it makes range checks rather difficult and time consuming.

@nashjaee mentioned #3 is less relevant if we can fix this one.

Make tinting of the units more pleasurable

Currently the miniature models are modeled in a way when the mini is tined in the model, only the base will change. This results in a (relatively) ugly lookin tint when players tint to differentiate squads.

From @tieren31's doc:

Add a piece of textured graphical UI to cover just the top of the minis. That graphical UI will be auto tinted to the same color as the battlefield. Now when players change the tint of the minis, only the sides of the bases will change, resulting in a cleaner look.

I think we need more details to make this actionable.

Army List Cards Overlay

Is your feature request related to a problem? Please describe.
I hear people mentioning it's an effort to keep scrolling back to the cards on the table to check them, and personally agree.

Describe the solution you'd like
I am suggesting an overlay (UI) that can be toggled showing the cards along one side of the screen to minimize the the going back and forth when looking up info.

Describe alternatives you've considered
The user could set a camera position over the cards and use the keyboard shortcut to snap to the camera, but then still needs to scroll to another location on the table.

Additional context

Consider a boundary for enforcing moves of larger units

When spawning move templates for non-small based unit, the template will have an extra boundary around the move template that fits the base. This is so it aids players in moving large based units (for example, without moving through a wall).

Add google analytics to the mod

Right now, @tieren31 has a very basic tracking script:

function updateModLoad()
    WebRequest.get("https://tierenswlegion.firebaseio.com/modLoadCount.json", self, "readCallback")
end

function readCallback(req)
    if req.is_done and not req.is_error then
        local currNum = tonumber(req.text)
        if currNum then
            WebRequest.put('https://tierenswlegion.firebaseio.com/modLoadCount.json', tostring(currNum+1), self, 'dummy')
        end
    end
end

We should consider using Google Analytics, since it's (a) free, (b) can be shared with multiple people, and (c) is going to have lot more relevant information/views that could be insightful.

Make map contributions separate from the mod itself?

FYI: The proposal is not to do any of this until the conclusion of IL4.

Right now, there are several categories of maps bundled with the mod:

  • Learning Game
  • Maps
    • Pre-Made Maps
      • Standard Maps
      • Tournament Maps
      • Random Tournament Map
      • Gathering Legions Maps
      • Battle Lines Maps
      • User Made Maps
    • Competitive Terrain Map

I'm proposing we cut the scope of what is offered as part of the mod significantly, in order to decouple updating maps or fixing broken links in maps from the mod itself (especially now that we will have more than 1 person contributing):

Learning Game

Keep It.

(We need to fix some broken textures BTW)

Standard Maps

Keep a few? I think it is nice to have 3-5 maps that we think will not need to updated often (they do not have to be hyper competitive, for example), so that the mod is very usable out of the box.

I would remove the rest, however.

Tournament Maps

I would remove all of these, as they seem to change the most often, and the actual mod development team seems not to be involved in the map development.

I'd like to look into having a separate mod channel (on the Steam Workshop) for this purpose, i.e. subscribing to "Star Wars Legion Tournament Maps" would give you access to a bunch of different maps/cartridges.

Gathering Legion Maps

I would remove all of these. This is no longer actively maintained/developed.

Battle Lines Maps

I would remove all of these. Some of them do not work, for example.

User Made Maps

I would remove all of these, they seem very suited for separate workshop items that users can contribute. We could even keep a Wiki page of popular maps and workshop items.

Competitive Terrain Map

Keep It.

I do not know how often these are updated, so maybe it just makes sense to keep them as-is for now and consider decoupling them if and only if they end up needing a lot of updates and additions in in the future.

VR support movement tool

Is your feature request related to a problem? Please describe.
The movement tool is not working using VR. When you try to move the whole tool or just the part beyond the hinge then it comes apart and does not reacht the layout you might expect.

Describe the solution you'd like
Not sure what the best Sollutions could be.

Make a "squad move" button

(From @tieren31's doc):

Button in the move menu of the command tokens that auto moves all of squad members to the leader

I am not sure exactly how this would work. Adding as Lacks Details for now.

Evaluate if the dice rollers are "fair"

We've had multiple complaints that 1 or more of the dice rollers are providing results that are not consistent with the probability of the dice being rolled. This might be an easy fix or might require a larger investment in the dice roller (or using an "electronic" dice roller - which will be less fun).

Range ruler for VR

Is your feature request related to a problem? Please describe.
I would like a range ruler for VR since you can hold and rotate an object in vr with more fine degrees then without vr.

Describe the solution you'd like
Just a simple but accurate representation of the range rulers. Maybe one for every range?

Describe alternatives you've considered
There is a measuring tool/feature in TTS but that did not work last time i tried it. I’ll retest that.
Still a “real” range ruler set would add to the VR experience

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.