Git Product home page Git Product logo

catalogue-development's Introduction

BSData Project

BattleScribeDataWeb is the web application that serves BattleScribe data files from the various data repositories on GitHub. It is a Java 8 web application designed to run on Google App Engine. It is built and deployed using Maven 3.5.

It consists of an Angular (JavaScript) front end and a RESTful (Jersey / JAX-RS) back end.

This guide is written from the perspective of a Netbeans IDE user running Windows, however you can use any IDE or toolset that supports Maven.

It is assumes that you have some experience with developing on Windows, or can translate the following to your operating system of choice. You should also have some knowledge of software development/programming using Java (or are willing to learn it!).

Contents

Before You Start

  1. Make sure you have a Google account.
  2. Make sure you have a GitHub account and are a member of the BSData organisation (https://github.com/BSData).
  3. Generate a GitHub security token to let the app access GitHub on your behalf.
    • Log in to GitHub and go to Settings -> Developer Settings -> Personal access tokens (https://github.com/settings/tokens).
    • Generate a new token with public_repo and read:org scopes. Take a note of the token.

Download and Install Everything

(Note: On Windows, references to "Google Cloud Shell" below means the "Google Cloud Shell" command line launched from the Start Menu.)

  1. Download and install the Java SE 8 JDK (http://www.oracle.com/technetwork/java/javase/downloads/index.html)
    • You may be able to use the Java 9 SDK - YMMV.
  2. Download and install the GitHub Desktop app (https://desktop.github.com/).
    • Check out the bsdata project. (https://github.com/BSData/bsdata).
    • The root folder you check out into (containing pom.xml) will be referred to as the project folder.
  3. Download and install the Google Cloud SDK (https://cloud.google.com/sdk).
  4. Initialise the Google Cloud SDK (https://cloud.google.com/sdk/docs/quickstarts).
    • You will be presented with a command line after installation, or you can run gcloud init from the Google Cloud Shell.
    • Log in with your Google account.
    • Choose to create a new project (or select a previously created project). This will will be your own App Engine development environment that you can deploy and test on. Make a note of the name.
    • You do not need to configure Compute Engine, it can be skipped.
    • Make sure your App Engine project is alive and well in Google Cloud Console (https://console.cloud.google.com).
  5. Install the Google Cloud Java Components (https://cloud.google.com/sdk/docs/managing-components).
    • From the Google Cloud Shell, run gcloud components install app-engine-java
    • To update the Google Cloud SDK to the latest version, run gcloud components update
  6. Download and install Netbeans Java EE bundle (https://netbeans.org/downloads/).
    • The current version of Netbeans is 8.2, and by default it does not include Maven 3.5. Future versions of Netbeans may change this.
  7. Download and unzip Maven 3.5 (https://maven.apache.org/download.cgi).

Set up the Project in Netbeans

  1. Launch Netbeans
    • Pro tip: If you prefer a dark colour scheme, go to Tools -> Plugins and install "Darcula LAF for Netbeans"
  2. Set Netbeans to use Maven 3.5
    • Go to Tools -> Options, Select the Java section then the Maven tab.
    • Set Maven Home to the directory you unzipped Maven 3.5 into.
  3. Open the BattleScribeData project you checked out from GitHub.
  4. Create a file in the project directory called maven.properties
    • This file should not be checked in to GitHub (it's excluded via .gitignore). It contains Maven settings specific to individual developers.
    • Add the following line:
      appengine.dev.project.name=YOUR_APP_ENGINE_DEV_PROJECT_NAME
      
      (Use your App Engine development project name created when setting up the Cloud SDK above).
  5. Create a file in the <project directory>/src/main/resources/common/java/ directory called github-user.properties.
    • This file should not be checked in to GitHub (it's excluded via .gitignore). It contains GitHub authentication settings that should not be public. If your GitHub authentication token is checked in to GitHub, it will be invalidated and you will need to generate a new one.
    • Add the following lines:
      ## GitHub User ##
      github.anon.username=GITHUB_USER_NAME
      github.anon.token=GITHUB_AUTHENTICATION_TOKEN
      [email protected]
      
      (Use your own GitHub username and token).
  6. Build the project
    • Select the local Maven profile from the "Project Configuration" dropdown at the top.
    • Right-click the project and select "Clean and Build".
    • Wait for Maven to download required dependencies (jar libraries) and build the project.
  7. Run the project locally (appengine:run Maven goal).
    • Select the local Maven profile.
    • Right-click the project -> Run Maven -> appengine:run.
    • Go to http://localhost:8080 to see the app.
    • (The local server is provided as part of the Cloud SDK)
  8. Debug the project locally (appengine:run Maven goal).
    • Select the local-debug Maven profile.
    • Right-click the project -> Run Maven -> appengine:run.
    • The local server will wait listening on port 5005 for the debugger to attach.
    • Go to Debug -> Attach debugger: Connector SocketAttach, Transport dt_socket, Host localhost, Port 5005.
    • Go to http://localhost:8080 to see the app.
  9. Deploy the project to your App Engine development environment (appengine:deploy Maven goal).

A Quick Tour

  • pom.xml in the project directory contains Maven configuration.
    • General app properties, such as name, version, Java version etc.
    • Build profiles which determine app configuration for specific environments.
      • local for running on the local server
      • local-debug for debugging on the local server
      • dev for deploying on your App Engine development environment
      • test and prod are for the main BSData test and live App Engine environments. You will not be able to use these unless authorised.
    • Dependencies - the specific versions of libraries required by the app.
      • Maven will handle downloading and providing the libraries when building and deploying the app.
  • /src/main/resources/ folder contains configuration files for each Maven profile, plus common properties files used by all profiles.
    • .../java/ files are general config used by the java app and are copied into the WEB-INF/classes/ folder upon build/deploy.
    • .../webapp/ files are used to configure the application server and are copied into the WEB-INF folder upon build/deploy.
  • /src/main/webapp/ folder contains the web front end
    • HTML and CSS
    • .../app/ folder contains the Angular Javascript app
  • /src/main/java/ folder contains the back end Java app.
    • rest package contains RESTful web services (https://jersey.github.io/documentation/2.26/jaxrs-resources.html).
      • BattleScribeDataRestConfig.java configures the app and performs startup tasks.
    • viewmodel package contains model classes that are used to pass data between the web services and the Angular front end.
      • These objects are converted to/from JSON to be sent/recieved in web requests/responses.
      • These objects are used by the BattleScribe app and should not be changed without proper planning. Changes could cause problems with BattleScribe reading repository information.
    • model package contains model classes for BattleScribe XML data files and indexes (http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php).
    • dao package contains "Data Access Object" classes used used to read/write to data sources.
      • GitHubDao.java is used for communicating with GitHub.
    • repository package contains classes for creating BattleScribe repository indexes (.bsi) files.

catalogue-development's People

Contributors

amis92 avatar bsdata-bot 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

Watchers

 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

catalogue-development's Issues

New repo: Warlords of Erehwon

I have been creating the data files for Warlord Games new game: Warlords of Erehwon. I would like to get this listed under the BSData repo so the public will have it display on their list as available I have created my own repository and have the current version of the files hosted there.
https://github.com/the3dwargamer/WoEDatafiles

I am brand new to github and BS data creation. I am about 75-80% done with the data files. The catalogues finished are functional right now but there are just a few more factions I need to create still. Also some fixes/upgrades to perform on the existing files.

What further would I need to do so I can be shared on BSDATA? (besides actually finished the data files completely, estimate they will be completely done in 1 to 2 weeks)

No longer have push access

I just started work on adding the IA datasheets to the new w40k repository, but I don't have push access anymore (probably because of the rename stuff).

Can I get permission again?

WHFB 6th ed.

Hi, I would like to contribute and create a new repo for warhammer 6th edition

Managing Force Entries

Hello. I am working on the War of the Ring repository, where you can take two types of Forces (Army and Allies, with allies limited to 25% of the total points).

There is however a catalogue (The Forgotten Kingdoms) which can only be taken as Allies. Do I have an option to limit this catalog to be taken only as Allies?

p.s. I posted this here as I think it's not just WotR-related, the answer can be useful in any other systems.

How To: Unit upgrades (like special weapons)

@Kangodo wrote

Tactical Marines Squad

Entry Group Marines 5/10

Entry: Tactical Marine 4/9
Entry Group 1/1 Sergeant

Sergeant 0/1 (default)
Veteran Sergeant 0/1

Heavy Weapon with a min/max-modifier that looks to the amount of selections in 'Entry Group Marines'

That last line brings me to another question from BSData/wh40k-9e#261 which is kind of related:
How do you prefer to do upgrades, on model or on unit-level?
On model-level is 'more correct', but in my experience it's really slow and annoying to add the things you want since you have to select every model and its weapons. It also causes the roster-view to be extra long.
On a unit-level means the model might not correctly replace it's old weapon, but it's much faster to create lists.

@senpai514 wrote:

Some would be fine one way on unit level but others would be better model level depending on how many models can take upgrade much like the difference between an assault squad and then vanguard vet squad.

@Kangodo wrote:

See Grey Knights (2014) for reference.
Strike Squad: As I did it before: Weapons on unit-level. Not 100% correct, but clear and easy.
Purgation Squad: Still on unit-level, but improved since I could make 8 entries. I do dislike the wordy options, makes it quite confusing on my phone.
Terminators: Weapons on unit-level, cannot make each entry because there are 20 combinations.
Paladins: Upgrades on model-level because there are too many combinations that are too important to create on unit-level.

So which of these units do you prefer?

How To - Let selection entries update profile stats ?

For the game 'Vanguard' we have a number of 'common and rare items' that can be taken by ANY model within the roster so I defined 2 shared selection groups which are then assigned to each model.

Some of those items can influence the stats of a unit - eg ' a rare mount' would increase the speed of the model with 2.

I have a profile type 'warband member' which includes those stats and which are assigned to each model.

I would have hoped that I could have added a modifier to the 'items' which would allow me to update the profile but this does not seem possible ?

I did some further checks and I could only achieve this it seems by adding a modifier to the actual model - at that point I can access the profile type type ... But even then I am not allowed to 'increment' the stat as it is not considered to be a number ( all stats seem string ).

Obviously adding the modifier directly to the model is very very cumbersome as I would have to add it to ALL members in ALL warbands for EVERY item that potentially could be selected ...

Am I missing something ? Is there a way to achieve this within the current system ?

Thanks

Adding a game?

I am so sorry if I am asking a stupid question or asking the wrong place, but here goes.

I am working a a complete set of files for the 15 mm game Patrol Angis. I have two forced so far. My question ism how do I add it to bsdata?

Updating releases with build artifacts

We've just released our first build of Middle-Earth, and it's all appearing nicely in the AppSpot listing and within BattleScribe.

I'd like to have the .bsi and .bsr artifacts added to our releases page in a similar way to Kill Team and 40k:

image

Obviously I could do it manually once the build has been created, but it looks like this is being done automatically via the build scripts in here - is that as simple as adding an appropriately updated version of the .appveyor.yml to our root like them, or is that something only major systems should really use?

Repository release

Let's start of in our new home with the first question(s)!

How exactly do we handle releases to the public?
Can anyone do it? Can I release, or is that an admin-only thing?
Whenever we want? Once every week (or two)? After a certain number of commits?

My idea would be to release every Sunday-evening if there are enough commits/changes.

I'm curious because I've added 9 units to a catalogue and changed another 10.
People are aching for those updates ;)

New repo: Hail Caesar

Hello,

I am a fan of the game Hail Caesar and while there are a few Warlord Games games on Battlescibe there is not yet one for Hail Caesar.

Joining Repository Updates Wiki

A few suggested updates to the Wiki:

Added Repositories: (I would like to work on these)

  • Warlord Games > Test of Honour
  • Spartan Games > Uncharted Seas

Moving repositories:

  • Deadzone > Mantic Games
  • Warpath > Mantic Games

Open questions:

  • Spartan Games no longer exists. Most of the game systems now sit with Wayland Games (who also produce Wild West Exodus - possibly restructure these together) - Only the Halo Games did not transfer over tmk - source: https://www.youtube.com/watch?v=gHJ3eoXhxAg
  • Fantasy Flight Games do all listed Star Wars games as well as Rune Wars - would it make more sense to move these all under a Fantasy Flight Games label? (I appreciate this causes some issues for the likes of Warhammer Diskwars but again I'd look for that under FFG ahead of GW).

*Disclaimer - I'm new to this community so apologies if this is the wrong way to go about things. I read through what I could find and made a best guess.

Mechanicum Tahgmata

This is a polite request for someone to do a data folder for this fan-dex: https://img.fireden.net/tg/image/1518/48/1518481249843.pdf

It's someones homebrew of what the Mechanicum Tahgmata could look like in 8th edition. This is completely selfish of me to ask, so I'd understand if it was turned down. To anyone who would be kind enough to do it though, I thank you. Sorry if this wastes anyones time, and keep up the good work. It's always appreciated.

New repo: Monsterpocalypse

Since this game is coming back, I'd like to make a repository for this. The entries are fairly basic, and I have already made an extremely simple version just to have something for the time being.

New repo Kill Zone

Hi,
I created everything for an old tabletop and would like to include it into BS.
How may I do this?

Data Licensing Question

I'm considering making a free website (w/ minimal ads to pay for hosting) for Warhammer 40k to be able to quickly search and filter units by keywords, features, and wargear, with some baseline data showing and maybe a bit "mathhammer" as well. I would want to keep this updated using the data generated by your team for 40k, but would like permission to use this data before I attempt any such endeavor. The entirety of it is still just thoughts in my head, so I have nothing concrete to demo in this regard. In the past I've done a character analyzer for the Everquest 2 MMO, but the data and math in this case is a much less guesswork.

How to: Update Revision number.

I could not find another thread to ask this question, so I made a new issue.
The numbers are made up and just as an example.

__When do we have to update the revision and who does it impact?

I thought of this when I was doing multiple updates some time ago.
On day 1 the file was released to public as revision 49
On day 2 I made a commit with changes, making it revision 50.
On day 2, in the evening, I made another commit and updated it to 51.
In the following week I made more changes and it ended as revision 56.
Then it was released as revision 56, so end-users suddenly went from 49 to 56.

But is this really needed?
The revision is important because it tells end-users (and their BS) that it's a newer file.
Does that also apply to the Github-branch and do I need to up the revision-number with every commit?
Or would it be enough to only update the revision once after each release.

For my example that would mean I only bring it to revision 50 after the release and then update without changing revision.
Or would this cause issues with other authors?

I looked around on the BSdata wiki but couldn't really find an answer.

New Feature Request - Output Sort Order

Would be nice if we could add a display/output sort number to items like ( selection entry, selection entry groups and shared rules ). Currently it seems that the display is simply done alphabetically.

This sort number should then be used for:

  • selections - eg for a spell caster I want the spell groups to be displayed first as entry
  • roster output - eg a unit profile should be displayed before any other profiles (like weapons )

For the moment I managed to obtain the above by using a little trick - starting the name with a space ensures that they get sorted first - but that only works for 1 item of course.

Thanks,

Steven

New repo: WHFB 6th ed.

Hi! I want to create data files for BS's Warhammer Fantasy Battles 6th ed. Our WFB 6 community is growing bigger in Poland so we need to make rosters... fast using BS :)

Localization

I'd like to add a new repo that consists of a translation of warhammer 40k to brazilian portuguese.
I've create a python script that reads the cat files and replace the english texts with the portuguese translation. It uses the latest realease from wh40k repo.
The translation is made using Google Translator API, it create a dictionary file that can be edited by the comunity, helping to improve the translation accurancy.

Its address would be wh40kBR and name Warhammer 40k Brazil or Warhammer 40k BR.

Having this repo in the official BattleScribe Data would estimulate new contributors and certainly would make the warhammer 40k scenario stronger in Brazil.

Links
https://github.com/evertonpendragon/wh40kBR
https://github.com/evertonpendragon/wh40kPTBR/releases/download/v0.1.3/wh40kPTBR.bsi
https://github.com/evertonpendragon/wh40kBR/releases/download/v0.1.3/wh40kBR.bsr

How To: Unit leader upgrades

So the discussion is taken from wh40k/#215. Let me quote:

@Kangodo wrote:

[...] The problem is that both the unit AND the Exarch-upgrade are options in the Entry Group.
It looks like this, with the min/max behind it.
Main Entry

Entry Group: 0/infinite

Models of 20 points: 5/10
Upgrade of 10 points: 0/1
The Main Entry asks the Entry Group what the minimum is, and the Entry Group says it's 0.
So the Main Entry tells you that the minimum amount of points is 0.

An 'easy fix' would be to set the Entry Group at a min/max of 5 to 11 with a Default of the Models.
Min = 5 because you need at least 5 models.
Max = 11 because you can have a max of 10 models and the upgrade.
That would mean the Entry Group now replies with "I need at least 5 selections and my Default are the models, so that's 100 points." and the Main Entry would reflect this.

Someone that knows the Codex could probably do that in 15 minutes. If I were to do it, it would take hours because I had to look everything up in a PDF ;) Just to make sure I didn't make any mistakes.

@amis92 wrote:

While I'm here, I'll put forth an academic discussion.

(mind you it's not directed at anybody; rather a proposition)
I'm decidedly against such Grouping. I imagine a Group being a choice of similarly-weighted Entries. What I cannot stand are such Groups as mentioned above, where in single Group we buy both models and upgrades to them.

I'd see it two ways: either knock Exarch upgrade out of the group or turn upgrade Entry into Exarch entry, which would have the cost of model and upgrade, and represent an actual Exarch.

I prefer making such choices as they seem to look like: make a Group of models available in unit and set limits appropriately. Exarch is a model, not an upgrade in this scenario.

All this applies to units where leaders are optional upgrades.

Actually I think it should make it's way into catalogue-development.

Your thoughts?

Kill Team Specialists

It looks like a big project, but for Kill Team Detachments it would make more sense (to me) to make the Entry link on a per-model basis rather than per squad. This way you can define which model is which specialist. Also recommend adding the 'Leader' specialist.

New repo: Warhammer: Age of Sigmar Skirmish

Would be great to include Skirmish since the rules are getting updated in 2019. Should be able to use the points from existing AOS repo and converting. All units applicable but only 4 'factions' as they are Grand Alliance based.

Feedback waiting time

In /40k we have a lot of open issues.
These stay open because the last post asks for more feedback or wants to know if something is fixed.

I would like to propose a maximum waiting time for these kind of open issues.
If a user hasn't responded in 7 days, we can assume that the issue is fixed or that someone else will report the issue again with more clarification.

What do you think about this?
It's time to clean up those issues! :)

Original Contributor gone, would like to continue his work

Hi, I am somewhat new to Github so please bear with me if I say something stupid.

I started updating the data files for "Galeforce 9s - Tanks" and would like to commit the changes to the "official" repo. So I put in a pull-request, but as far as I can see, the last activity in there has been in July of last year.

What would be my logical next step to make my additions available to the community? Is it sensible to replace the Repo entirely?

Any help / explanation of how to proceed in a case like this would be much appreciated. :)

Thanks in advance
Cheers Nicolas

Roster Cost Limit

I have a couple of questions regarding cost limits.

I noticed that some users do not understand this field and sometimes just leave the field with its default value of '-1'. This leads to issues in roster validations as some of my rules are based on the cost limit ( eg for each 40 pts of the roster do X or Y ).

Questions:

  • Is it possible to enforce the input of a cost limit ? Ideally even based upon the chosen force organization entry.

  • Can a constraint / rule check be defined on the cost limit ? I tried but couldn't really find something ... One can add a check on the current points of the roster but that is not the same as once a couple of units are chosen then the rule validates - even with a cost limit of -1 => the 2 are not related. Ideally again I would like to put these rules per force organization type.

Middle Earth Strategy Battle Game - Start from fresh or pick up Hobbit?

Hi,

I'm interested in working on the Middle Earth Strategy Battle Game from GW that's released today - and think I can probably base it on the existing (sadly now abandoned) Hobbit edition.

I just wondered if there's a recommended/preferred way of doing this that won't upset/impact too much.

Option 1:

  1. Work within the Hobbit.gst and update name, etc.

Option 2:

  1. Create a new repo for the MESBG, rename the Hobbit.gst, and update names, etc.

I assume if I go with option 2 I should update the unique id of each component so that they don't clash with those from the Hobbit, or is that less important (i.e. only need to be unique within a game system)

Thanks in advance,

Ben

New repo: X-wing 2.0

I would like to add a new repo for FFGs Star Wars X-wing Second Edition. I have the core set converted already and will be working on the rest throughout the week.

Regards.

Unwanted uncommited changes

For some reason my Github keeps adding Uncommited changes I did not make.
Usually it are only the Adepta Sororitas from 40k, but sometimes it includes a bunch of datafiles.

It then tells me that I made changes like this:
Old: <description>If the Cerastus Knight-Acheron opts to make a Run move rather than firing a weapon in the Shooting phase, it may move 3D6&quot;.</description>

New: <description>If the Cerastus Knight-Acheron opts to make a Run move rather than firing a weapon in the Shooting phase, it may move 3D6".</description>

It seems to do that with multiple &quot;->" and &apos;->'.
Any idea what causes this and how do I stop this? Because now I have to discard a lot of changes every time I want to commit a REAL change.

Not counting towards parent category

hello,

in the skaven cat there are two units in the core that dont count for points towards the allowance for core but points count for the army. is there a way to have them inside the core block but the points don't get included for core?

Unofficial sources/fanmade stuff

First of all, we now have 500 commits. Congratulations!

As to my question:
Lately I've been reading a lot of the Angry Marines and I was wondering how people would feel about it if I added a file for them?

For people who don't know what I am talking about:
Angry Marines are a /tg/ slash fanmade Codex that is really popular, not just to play but they are really famous on the internet.
The fanmade-Codex can be found here: http://1d4chan.org/wiki/Codex_-_Angry_Marines
I think it would be a good idea because:

  1. There are quite some people who play it.
  2. People will love us for adding them.
  3. Because Angry Marines.

Question two: If I have permission to add them, to what level should I censor the gigantic amount of swearing in their Codex? Or should I include a 'not for children'-tag to their name?

Temper Maximus!

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.