Giter VIP home page Giter VIP logo

squad-builder's Introduction

FF Squad Builder

This is a squadron builder for the Fantasy Flight X-Wing Miniatures game. It allows you to track your collection, build/save/edit squads from that collection, preview cards (including unreleased content), and print out a squadron in a 'build mat' style format, for easy play.

Project Goal

The project's goal is to remove the 'card management' aspect of theX-Wing Miniature's game. I personally own at least one of every expansion, when I want to sit down and play with my friends (who don't have their own collections), it's a minimum of an hour for us to go through the upgrades, build squads, and get setup. Since most of my friends don't want to put in the effort to build squads this way, I need something that drastically reduces the time it take to produce a squad.

Additionally, I find the cards awkward to deal with while playing; typically flat surfaces are at a premium when we break out the miniatures, so having all my upgrades in a simple to visualize way is very important to me. A 'build mat' seems a perfect solution to the problem.

But why another squad builder?

I am aware of both http://xwing-builder.co.uk/ and http://geordanr.github.io/xwing/. I have a few issues with both; xwing-builder is very slow for me (I think it's related to my retina display), and geordanr's project has a ui that I find unpleasant to try an work with. While both sites have the ability to print squads, the resulting print out is either lacking the card text, or frequently spans to multiple sheets, making it more awkward to work with.

Technically speaking, I've figured out how to make xwing-builder do what I want, but it's awkward enough that building my own squad builder made sense to me.

Why not improve Geordanr's project? It's open source.

It is, and I considered doing this. The problem, for me, is that I would want to make such sweeping changes to project structure, technology (it's a bit of a hodge-podge of various web technology), and UI that it would almost be a new project. Plus, it's difficult to tell someone you disagree with large amount of their design decisions, without coming across as an arrogant ass. (Which I am, admittedly.) In the end, I decided to just do my own thing. After all, having two open source squad builders is hardly the end of the world.

Oh, and it doesn't help that I have a pathological hatred of ruby, and feel coffeescript is extremely toxic. I'm not evangelical about these opinions, however I doubt geordanr would see eye to eye on the removal of SCSS, coffeescript, and the rewriting of his x-wing backend project in node.js. Better if I do my own thing. :)

Features

As of the current release, this is what squad-builder can do:

  • Mobile Device support
    • Specifically designed for use on iPad (Tested on an iPad 4th gen)
    • Specifically designed for use on mobile phones (Tested on a Nexus 5)
  • JSON Database of cards
    • Documented json schema.
    • Permissive license to promote reuse of data.
    • Available through a completely open REST API for other developers to leverage, if they wish.
  • REST API
    • You can search ships, pilots, and upgrades.
    • Supports filtering through equality, <, >, <=, >=.
  • Squads
    • You are disallowed from building flagrantly invalid squads.
    • You can name squads.
    • You can save squads.
    • You can view saved squads.
    • You can print a build mat for a give squad.
    • You can share/link to squads.
  • Collection
    • You can track how many of each expansion you own.
  • Browser
    • You can search by card name.
    • You can preview cards.
  • Account authentication
    • You can use Google to authenticate.

In the future these are the features I'd like to add support for:

  • XWS Import/Export
  • Card Browser improvements
    • Card images (toggle between build mat format and images)
    • Ability to filter cards by something other than name
  • Rules Card support
  • Importer improvements
    • 'upsert' mode (current: updates existing models, inserts new ones)
    • 'clean' mode (clears existing db, imports fresh)
    • 'insert' mode (only inserts new records)
  • Alternative sources
    • Attack Wing support?
    • Community built cards/ships?

Card Data

I got my initial data from parsing geordanr's data (as it's in MIT licensed code files), and converting it to my json format. The project includes an importer (in /import), and a readme on how to use it. That being said, my data has diverged from his, and while I've tried to backport those changes into the import script, I expect the importer to become increasingly out of date the more changes I make.

I have made significant attempts to format the data in a useful, extensible, and accessible. I want you to use my data. Do I have a typo? An issue? Please, submit a bug, and/or a pull request to fix it! Am I missing something? Add it, and submit a pull request.

REST API

I allow anyone to use the (very basic) REST api I've written for searching cards. My traffic is limited, however, so please be kind about hitting it. If it gets abused, I will enable a same-origin policy and block public access. Don't be that guy.

If you expect to be doing a large number of requests (>200/day), please, contact me. I will be willing to work out something.

Contributions

I am open to contributions of all natures. I prefer pull requests, but I'm willing to work with you to get your improvements in. Keep in mind; Just because you think your change is an improvement doesn't mean I will. I'm always open to discussion, but at the end of the day, it's my project, so don't be offended if I tell you that I'm not interested in your change.

squad-builder's People

Contributors

morgul avatar

Watchers

 avatar James Cloos avatar  avatar

squad-builder's Issues

Build My Collection

The My Collection page must:

  • List all expansions
  • Allow user to specify how many of each expansion they own
  • Correctly highlight cards (in the Squad Builder) that the user doesn't own, or has used too many of.

Profile Page

The Profile Page must allow:

  • View information about a user
  • View top squads
  • View overall win/loss ratio

Rename squad notes to description

Right now, the 'notes' field is pretty generic. However, when we're showing off squads (example, the 'Top Squads' list on the profile page), it's nice to have some sort of a description. As description can also include 'how do I play this squad?' or 'what is the gimmick?', I propose changing this to be description.

It's really just a change in terms, no functionality is effected.

Warning when switching factions

Right now, when you switch faction, we delete your current squad. While this is expected behavior from a developer standpoint, it's not obvious to the user. We need to pop a warning dialog telling them we are ditching their changes, but only when they have something built. (No dialog on an empty squad page.)

Huge should have no choice in pilot

Currently, huge ships have to chose their pilots. Instead, they should have no choice, as that's not a thing for huge ships.

The current system is super awkward for the CR90, which can assign the fore section pilot to the aft, or fore section ship. It could even assign two fore section pilots.

My Squads page

The My Squads page must:

  • List saved squads w/ summary
  • Ability to delete, edit or print build mat of squad.
  • Tracking of win/loss ratios

Selection boxes always pop keyboard on mobile

There seems to be a bug in ui-select where whenever you click a dropdown, it pops the mobile keyboard. They're doing something with focusing that makes it incredibly annoying to use on mobile/touch devices.

Squad ownership

Currently squads don't track their owner, which means that if I share a link to a squad with someone else, they can edit it.

Instead, what should happen is that when 'save' is clicked, it saves it as a new squad for the user who edited the shared squad.

Calculated counts are off when upgrades share the same name as pilots

For example, take 'Luke Skywalker'. This is both a pilot card, and a crew upgrade. When we calculate the total number of cards, if someone has a core set and the Millennium Falcon Expansion Pack, then we will calculate that they have a total of 2 'lukeskywalker' upgrades.

The only place where this can possibly happen, given how the canonical name works, is with pilots and crew sharing the same canonical names. For calculation purposes, we could append '_pilot' onto all pilot cards, when we calculate them.

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.