Git Product home page Git Product logo

soc.th.gl's Introduction

soc.th.gl - A Songs of Conquest fansite

Features

  • Full codex of all the game's units, skills, factions and wielders
  • Spotlight search

We have the approval and support of the game studio (Lavapotion) to use the game data in this project ๐Ÿค˜.

Contribution

Join us on Discord if you like to contribute.

Town Graph Improvements

If you are reading this, then you're the perfect candidate to improve the Town Graph! Here are some ways in which you could contribute:

  • Use terms to translate the graph into other languages.
  • Add share button and sync URL with build.
  • Add building sizes like S/M/L to the data (so that we can calculate needed town size).
  • Calculate needed income for achieving build.
  • Calculate recruitment costs and growth statistics (e.g., how long before you max the stack).

Development

First, run the development server:

npm run dev

Open http://localhost:3000 with your browser to see the result.

You can start editing the page by modifying pages/index.tsx. The page auto-updates as you edit the file.

The collection files in lib/collections are extracted from the game data. This is done by a different project, which is not part of the repository.

Game data extractor

This project is based on the game data of Songs of Conquest. See extractor/README.md for more information.

License

MIT

soc.th.gl's People

Contributors

0x0014 avatar dravogh avatar lgtm-migrator avatar lmachens avatar mikitaserabrakou avatar nightshadov avatar prncc avatar rizfn avatar serpens-ignis avatar unei95 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

dravogh

soc.th.gl's Issues

Add Faction and Unit Based Research Information

For example Barya's "Move Fast" Harima troop research gives +5 initiative each level but at third level it also gives them +1 troop movement. This isn't known until you've reached that research in game so an external tool with this info on it would be very good. Unit specific research especially is usually like this. For example Musketeer research grants +10 ranged offense, then +range, then +essence all completely different upgrades at each tier.

Lists not properly aligned on mobile

Some of the lists (wielders, skills, factions/wielders, factions/units) are not aligning left on smaller resolutions.
Example:

image

This only seems to happen when the screen is small enough for the sidebar to collapse. When it's present, everything works as expected:

image

Random event troop requirements displaying incorrectly

image

This is a Barya event, and it requires the unit with index 3 and faction 3. The faction is correctly mapped to barya, but the unit needs to be mapped to barya's 3rd unit (I think it's either dreath, brute, or sassanid.... probably brute), as opposed to arleons (ranger)

The problem also occurs in the random event descriptions of other factions like Loth

If possible, can we change it to something like
<recipient> produces <number> or more <unitName> per round?
So something like "Recipient (Team) produces 1 or more Brute or more per round"

Add ranged attack stats to unit pages

Currently, the unit pages (like Rangers) don't have any ranged attack stats in them (ranged offense, range, deadly range). This makes the unit pages of primarily ranged units (like the aforementioned Rangers) quite unhelpful, as the most important stats of these units are missing.

Since your JSONs with game data have that information in them, I guess this could be easily fixed; and for many of the units, it would make their pages much more useful than how they're now.

"upgraded" Sprites incorrectly populated when read from faction

Incorrect when rendered from faction.units[0].upgraded where factions = getFaction():

<div style="background-image: url(&quot;/units/RanaHostilesAtlas.webp&quot;); background-position: left -210px bottom -295px; height: 49px; width: 54px; margin: 0px auto; clip-path: path(&quot;M 0 26 L 3 16 L 13 17 L 24 0 L 48 7 L 48 13 L 54 13 L 54 33 L 50 47 L 46 49 L 37 49 L 37 44 L 29 48 L 22 48 L 22 35 L 12 43 L 9 35 Z&quot;); display: block;"></div>

Correct when the same (conceptual) unit is rendered from the output of getUnits

<div style="background-image: url(&quot;/units/RanaChelunElderAtlas.webp&quot;); background-position: left -351px bottom -256px; height: 82px; width: 96px; margin: 0px auto; clip-path: path(&quot;M 51 0 L 42 12 L 42 0 M 28 24 L 36 13 L 42 12 L 21 40 L 14 46 L 0 41 L 1 34 L 8 23 M 21 40 L 51 0 L 82 10 L 82 15 L 96 15 L 93 25 L 93 41 L 89 51 L 93 60 L 87 66 L 87 74 L 79 82 L 69 82 L 65 78 L 69 72 L 65 70 L 61 74 L 44 80 L 36 78 L 39 66 L 43 58 L 35 54 L 25 44 L 25 59 L 16 59 L 16 53 L 20 48 Z&quot;); display: block;"></div>

Some Skills have themselves as a requirement

An example for this is "March" on Sla-Kin.
image

This problem already exists in the files produced by assetRipper
image

I haven't checked in game whether or not skills showing this behavior are unobtainable.

For legal compliance, add link to Privacy policy, Attributions, and Disclaimers

Standard practice to add a link to a privacy policy that explains if information is user session info is tracked, exactly what information is tracked, and how to opt out.

Attributions should also be listed for content that is used on website that is not owned by the website's developers including images and libraries.

Disclaimers are also common, explaining who owns the intellectual property.

This information is all commonly placed in a footer or header.

Add sitemap.xml and robots.txt for SEO

We can tell search machines like Google which pages are available on https://soc.gg and should be scraped.

A simple guide for Next.js:
https://nextjs.org/learn/seo/crawling-and-indexing/xml-sitemaps
https://nextjs.org/learn/seo/crawling-and-indexing/robots-txt

In short, we have to add two routes. The sitemap.xml.ts reads generates an XML for each route with getServerSideProps. The routes are similar to the links in the sidebar.
The robots.txt is static and could be added to the public folder.

If this task is done, I can submit the sitemap.xml to Google Search Console.

Add details to unit pages

Right now, https://www.soc.gg/units/Barya/Sassanid and other unit pages doesn't display details except the name, icon and lore.

image
image
image

I would like to add the information displayed in the in-game codex.
This task requires to update the type definition in:
https://github.com/lmachens/soc.gg/blob/main/lib/units.ts and add missing properties for purchaseCost, obsoleteGoldCost, stats and troopAbility. This data is already in https://github.com/lmachens/soc.gg/blob/main/lib/collections/units.json

Add missing spell/unit's essence information

It'd be more than useful to be able to check information about spells, their cost and their effect based on tier on soc.gg.
Units having information about what essence they generate would also be more than welcome

Add Random Events

Example:

Faction: Arleon
Name: Prize Hen
Description: A patrol stumble upon a village in celebration. They quickly find out what the ruckus is all about. A hen has layed a solid golden egg. The egg and the hen were swiftly claimed for the realm's profit.

In addition, details about triggers, recipient value, artefact types or penalities would be nice.

Full data extracted from game:

{
    "id": 2,
    "randomEventData": {
      "type": 1,
      "uniqueName": "Arleon/GoldenEgg/PrizeHen",
      "nameKey": "RandomEvents/Arleon/GoldenEgg/PrizeHen",
      "descriptionKey": "RandomEvents/Arleon/GoldenEgg/PrizeHen/Description",
      "eventChainNameKey": "RandomEvents/Arleon/GoldenEgg",
      "isReoccuring": 0,
      "chanceOfHappening": 0.08,
      "eventEvaluationTrigger": 0,
      "requirementEvaluationType": 0,
      "requirements": [
        {
          "requirementType": 7,
          "resourceType": 0,
          "entityType": 6,
          "artifactType": 7,
          "factionIndex": 0,
          "unitIndex": 0,
          "eventReference": {
            "uniqueName": null
          },
          "value": 5
        }
      ],
      "eventRecipient": 0,
      "recipientArtifactType": 7,
      "recipientFactionIndex": 1,
      "recipientUnitIndex": 1,
      "recipientTroopUpgradeType": 0,
      "recipientValue": 500,
      "reward": {
        "rewardDataList": []
      },
      "penalty": {
        "penaltyDataList": [
          {
            "penaltyType": 0,
            "resourcePenalty": {
              "type": 0,
              "amountMinMax": {
                "min": 500,
                "max": 800
              }
            },
            "destroyOwnedBuilding": {
              "buildingToDestroy": 0,
              "destroyAll": 0,
              "amount": 1
            },
            "createHostile": {
              "troop1": {
                "factionIndex": 0,
                "unitIndex": 0,
                "size": 0,
                "upgradeType": 0
              },
              "troop2": {
                "factionIndex": 0,
                "unitIndex": 0,
                "size": 0,
                "upgradeType": 0
              },
              "troop3": {
                "factionIndex": 0,
                "unitIndex": 0,
                "size": 0,
                "upgradeType": 0
              },
              "troop4": {
                "factionIndex": 0,
                "unitIndex": 0,
                "size": 0,
                "upgradeType": 0
              },
              "troop5": {
                "factionIndex": 0,
                "unitIndex": 0,
                "size": 0,
                "upgradeType": 0
              },
              "troop6": {
                "factionIndex": 0,
                "unitIndex": 0,
                "size": 0,
                "upgradeType": 0
              },
              "troop7": {
                "factionIndex": 0,
                "unitIndex": 0,
                "size": 0,
                "upgradeType": 0
              },
              "troop8": {
                "factionIndex": 0,
                "unitIndex": 0,
                "size": 0,
                "upgradeType": 0
              },
              "troop9": {
                "factionIndex": 0,
                "unitIndex": 0,
                "size": 0,
                "upgradeType": 0
              },
              "amountOfHostiles": 1,
              "spawnLocation": 0,
              "battleMapName": null
            },
            "createRandomHostile": {
              "faction": {
                "factionIndex": 1
              },
              "tier": 1,
              "maxUpgradeType": 0,
              "maxCost": 5000,
              "troopCount": 5,
              "amountOfHostiles": 1,
              "spawnLocation": 0,
              "battleMapName": null
            },
            "reduceRecruitmentPool": {
              "troopsToReduce": [],
              "percentage": 0
            }
          }
        ]
      }
    },
    "type": "GoldenEggPrizeHen"
  }

Intimidating, Inspiring and Reach have wrong descriptions

Intimidating, Inspiring and Reach have broken descriptions. The first two of those say only "Give friendly/enemy units within 1 hexagons:", but they do not say what will be given. Reach, on the other hand, says that +1 melee range is given to all friendly units within 1 hexagons, as opposed to +1 melee range for this unit only.

All three of these can be seen in one place on the dragon page.

(P. S.: Thanks for adding the ranged attack info so quickly!)

Add research

Hi, and thanks for this project!

I have a feature request:
It would be helpful to also see research, and maybe have a link between units and related research available to boost them.

display skills as a tree

It would be much quicker and easier to understand if skill dependencies were shown as a graph

Pieces of untranslated text

While the main content of the site is available in multiple languages, some text is hardcoded into english. This includes the sidebar, search button and some others like "learn more" in the factions page.

Example, when browsing the site in portuguese:

image

Monetize this project

It helps me to develop this and other projects if I earn a bit by adding ads or paid services.
For this project, ads should work fine.
I like the idea of closable ads, which works fine on https://aeternum-map.gg/.

This task has low priority.

Add missing site terms

We started to translate site terms in #32, but there are some terms left, like meta description.

In addition, there are only English, German and Brazilian Portuguese translated for some terms. Other languages are missing.

Add patch notes to SoC.gg

Probably not required while the game is in Early Access, but it might be nice to keep a record of the balance changes on the page of every unit/building/spell. See the image for an example.

image

Alternatively, create a page exclusively for patch notes where we detail the version differences.

Add building trees for each faction

Please add information for each building of each faction, it would really help in making builds for the game.
-Building name
-Cost
-Units that get produced
-Requirements of this building
-Upgrade cost
-Produce after upgrade

A similar overview is visible in the fandom wiki site, but its not close to finished and not that pretty

Add locale selector

This project already supports multiple locales, but you can not select a different locale.
Examples:
https://www.soc.gg/en/factions (English)
https://www.soc.gg/de/factions (German)

The locale is automatically detected. See https://nextjs.org/docs/advanced-features/i18n-routing#automatic-locale-detection for more details.

The available locales are equal to the locales in-game.
https://github.com/lmachens/soc.gg/blob/main/lib/collections/locale.json is generated from the game-assets.

The task is to create a locale/language selector to transit between locales.
Technically, we can add links to change the locale:
https://nextjs.org/docs/advanced-features/i18n-routing#transition-between-locales
I am open for ideas how to implement a selector on UI side.
One idea is to add a https://mantine.dev/core/action-icon/ with https://mantine.dev/core/popover/ next to the social icons (GitHub / Discord). I think a country flag would be nice here.
Icon packs:
https://github.com/lipis/flag-icons
https://www.npmjs.com/package/country-flag-icons

Add a home landing page

Add a landing page for https://soc.gg/ Currently the Factions details are the default landing page.

This would be a good place to add links to official Songs of Conquest websites and discord.

Did the game data format change?

I followed the instructions from /extractor/README.md but some resource files were missing (after extraction succeeded using AssertRipper). I don't have the error handy because I was doing this on Windows a few weeks ago. In any case, could it be that the game's format has changed and now the extraction scripts need an update, or is it me?

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.