Git Product home page Git Product logo

sectors-without-number's Introduction

Sectors Without Number

Revised edition compliant Stars Without Number sector generator.

Build Status

Feature Requests & Bugs

Feel free to open an issue if there is a feature you'd like to see or something is broken. Pull requests are always welcome.

Development

This project is a front-end application written in React + Redux with a Firebase backend. For more information see create-react-app.

Getting Started

  1. npm i and cd functions && npm i
  2. cp .env.example .env
  3. Create a firebase project
  4. Create a Firestore Database (make sure it's of the "Cloud Firestore" database type.)
  5. Create a web application (checking the box for "Also set up Firebase Hosting ...")
  6. Navigate to "Project Overview" -> "Project Settings" -> scroll down to "Your apps" -> "Firebase SDK Snippet" -> click the "config" radio button and use the values displayed in firebaseConfig to fill out the values required in the .env file created in step 2 (be aware these values do not need to be closed with quotation marks in the .env file)
  7. Ensure you enable authentication by navigating to "Develop" -> "Authentication" -> click "Set up sign-in method" -> choose google and/or email + password
  8. $(npm bin)/firebase login or use your global firebase instance if you installed it globally (you might have to follow the google auth flow to authorize the firebase CLI)
  9. $(npm bin)/firebase use --add and select the project you configured in the firebase console.
  10. npm run deploy:functions to setup the cloud functions.
  11. npm run deploy must be run at least once to create necessary configuration / rules files (also ships the app to firebase)
  12. npm start to host the app locally

Deploying to Firebase

After you've logged into firebase and selected the project from the CLI, you can deploy by simply running npm run deploy.

Internationalization

Translations for all the strings on the site are in a google sheet. If you would like to help out just request access and tell me what language you'd like to work on.

Convert GDrive spreadsheet into intl files

  1. Use ExportSheetData plugin (https://github.com/Synthoid/ExportSheetData) to export json from google sheets
  2. Drop the downloaded file into the project's base directory
  3. npm run translate, which will take this file and get the translations where they need to be

sectors-without-number's People

Contributors

dependabot[bot] avatar eternallybaffled avatar ianderse avatar irame avatar jordanrr avatar koslowdavida avatar mpigsley avatar philipk avatar taylorwilhite avatar zeikko 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

sectors-without-number's Issues

Additional System Points of Interest

The ReadMe already says that adding star sizes is a possible feature, how about also randomly generating other planets that are not colonized purely for description purposes?

That would mean increasing the likelihood of more than 1 planet being generated in the system, but also allowing planets that have no world tags (which is already possible, however it looks weird as the "World Tags" section is still displayed), no population, and no tech level. However that would mean that the generator needs to make sure that planets either have no pop/tech/tags or they have at least one of each, it also means the generator needs to check that at least one planet in the system has pop/tech/tags at least while generating a system. These planets would make more use of #37, as the whole idea behind them is largely up to the GM.

On the same topic of more flavor, I'm not sure if 1st edition had this as I have not fully read the 1st edition, but for the revised edition, under Creating Stellar Sectors there is also a table on additional points of interest in a system.

I think it would be interesting to allow the generator to cope with something like a deep space research station orbiting a black hole, it would be even better if it could randomly generate it.
This would require the generator being able to create non-planet objects in a system. These objects could be as simple as a name and a text box, or you could use the table to fill in some possibilities. I think this is covered under the idea of adding asteroid fields, but there can be so much more than asteroids in a system that I think it deserved a more general name.

Faction Generation

Should probably be a many to many relationship with entities.

Also, might need a way to toggle this feature in the configuration if people don't want that.

Retire Local Saving

It's about time. With the addition of user accounts, it is unnecessary and has been causing a lot of extra development time since I need to worry about two "backends".

Only Fetch Sector Objects on Page Load

Currently we are going through and, for every sector that a users owns, we are getting all entities associated with that sector. This is nice because the user can just go straight to their sector view without anymore loading. With the new additional points of interest feature, we could be downloading a ton of entities that we might not necessarily be using.

The fix to this is to just download the small sector entities. Once a user decides to view one of their sectors we show a loading view, fetch it, store it, and load in their sector. This'll make the initial fetch significantly faster.

login error

When I signed up...either site....it said 'there has been an error' after doing so, even though got the email with no problem.

Sector isn't centered in SVG bounds

Something is wrong with the algorithm to calculate the positions of the hexagons. If you grab the left or right side of the browser and then resize the width of the screen slowly you can see the sector jumping left and right and certain widths.

Notes

Possibly look into markdown

Initialize new blank planets

In the new planet and new system modals, it would be nice to have a toggle where you could either generate a planet or leave it blank.

Planet Sidebar Information

Finish up creating sidebar information on planet. Still need atmosphere, temperature, biosphere, population, tech level, and additional points of interest.

Buggy Drag & Drop

When moving systems you can easily get into a state where the drop doesn't work and then you get stuck in a state that doesn't let you mess with the interface anymore.

The fix here would be to make sure the system drop always works. Maybe even expand the SVG elements to butt up next to each other so you always switching hover states instead of accidentally getting incorrect redux action firing.

Custom World Tags

This is the start of what I view as a larger project. I can see a whole other part of the website where you can create and edit custom attributes, tags, and other content that can augment your generator.

World tags would be an easy first step into this.

Sector Builder

Dependent upon #43.

Start with a blank sector and build it system by system.

Player & GM Views

Basically just a way to hide information for players with a shareable link. This will need to be wired up after #34

Adventure Hooks

Add directly to a planet. Have an option to generate a new adventure hook when viewing a planet. Render below the world tags.

Add features from Suns of Gold

The Suns of Gold expansion added a trade layer to each planet, might be useful to incorporate those features into the sector generator.

Limit Number of Renderable Hexes

If a sector is viewed in a really tiny viewport there will be a million tiny hexes generated which causes the page to shit itself.

The hex generator util needs a way to short-circuit the loops so that the page doesn't render a million hexes. A message needs to appear to let the user knows what is going on.

System & Planet Quick-add

On the systems header bar on the sector sidebar and on the planets header bar on the system sidebar, there should be a little button to quickly add new objects.

Sector Summary

Need a way to view everything about the sector in a different view. Seeing all the planets side-by-side is actually kinda important.

Placing icons

Hi man, awesome project.

It would be awesome if users could place some kind of tokens/icons, that could symbolize e.g. fleets, facitilies etc. of different factions.

Bonus points: can edit description of those tokens just like planets.

This would make GM turn much easier.

Add Systems

Long click on an empty hex to create a new system at that location.

[Discussion] Remove Seed From Configuration

The emichron generator had a seed input which is why I decided to add one, which was a regrettable decision on my part.

Why

The underlying reason is that it's hard to add new generated content when I always have to be careful about keeping existing generated content the same. If someone generated a sector a week ago and they go back to generate from that seed... it should be the exact same regardless of if I add new content or not.

And here's the thing. Based on a lot of discussions I've had it seems as though customization is highly important. Whenever you customize something the originally generated sector goes away.. The seed isn't important anymore. It's even less important when you can save it locally without having to recall the seed.

When

I think this should happen alongside the move to signup/login ( #34 ) because the only reason I need that seed option around is to share. Share will be built into this change as the sector will be saved on the server.

User Accounts

With a way to sync local saves to the "cloud". Will also need a limit on the total number of saved sectors as the amount of data stored per sector is going to be fairly large.

Sector Save

I could go down the route of adding signup/login with Firebase but I think that's more annoying than useful.

My current plan is add a save button that will persist the exact sector with localForage. Those persisted sectors will be keyed by the seed and selectable from the main home screen.

This is the first step before making anything editable.

Custom Entity Attributes

Instead of just selecting from the dropdown of options for population, tech level, etc. users should be able to add their own custom option.

Adventure Generation

Grab one of the adventure seeds from the book and fill in the necessary data. This should live on a planet.

Unit Tests!

I need to create a branch just to add some solid unit tests to the generator utilities at least so I can have peace of mind. That's what it's all about after all. PEACE OF MIND.

Move Systems

Random generation is all well and good but sometimes a system just needs to be moved. My thought here is to have button in the side panel to move and then you select another location which will automatically move or switch the system.

A toast will popup with the ability to undo that action.

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.