Giter Club home page Giter Club logo

shapeofthingsthatwere's People

Contributors

baaleze avatar guillaume-alvarez 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

shapeofthingsthatwere's Issues

Propose multiple paths to most discoveries

At the moment a discovery has a fixed list of pre-requisites.

It is possible to have a 'group' pre-requisite but not enough to prevent being blocked from some discoveries and will worsen after #24.

For instance the metals are hard to come by: require hill for the ore, forest for the fire, etc. It leans toward a pyramidal system whereas it should be a dense network.

The first step to prevent that is to allow multiple ways to get to most discoveries. For instance metallurgy could be discovered from experiments with metals and fire or from earth fire then allow to find metals from ore.

Thus the 'previous' list for a discovery could be

  • either a simple String list to allow from simple pre requisites
  • or a list of String lists, with an implicit OR between different list

I'm still not sure what the easiest way is to load it from json.

Armies are able to go on sea tiles

Once the 'boat' discovery is made the armies should be able to enter sea tiles.

Anyway they won't be able to progress very far on deep sea tiles without many related discoveries and policies.

Have a growth per production ?

Let say each tile produces some quantity of goods: FOOD (oat, wheat, beef, etc.), MATERIAL (stone, iron, wood, flax, etc.), LUXURY (gold, silver, wine, etc.) depending on its type.

The quantity produced is increased at each technology and policy. For instance GRASSLAND produces FOOD, when discovering oat (positively affected by GRASSLAND and PLAIN) each GRASSLAND tile produces +1 FOOD.

The quantity produced for all goods is summed at the power source (i.e. village/city): this is the power the city can sustain. Every turn the current power slowly progresses toward the sustainable power (be it positive or negative).

It means having lot of tiles allows to support a bigger city.

In case of tribute, a part of luxury (and only luxury) is given to the overlord.
In case of revolt the current power in the original city is not modified, but will progressively reduce as it lost tiles.
When creating an army, it is sustained from the MATERIAL part, that thus cannot sustain the city itself.

Initial discovery process is not clear

The player initially sees 'NOTHING' repeated for each faction. It is clearly not intuitive and should be improved so that it is clear:

  • he will discover something
  • he cannot know what but knows in which direction he is investigating

Add internal factions and politics

It is important the player empire is not just a color on the map.

One way to personalize it is to add factions or social groups to the game:

  • army leaders
  • rich merchants
  • cultural elite

Which one is prefered by the people? Which one is in command of the state?

When making decisions (choosing policies or discoveries) the player must know it will advantage one of these groups. The prefered group should provide bonus/malus to the empire, but failing to keep balance between them will also reduce the empire stability (see #19).

These groups might be personnalised, so that the player can ask them their advice, then either follow it or anger them.

A council (ala King of the Dragon Pass) could also be created with members of the different factions.

Permit to create and choose religions

When discovering the "religion" concept every empire should be able to define its religion. The options could depend on the discoveries already made. They would provide bonus depending on the religion. For instance :

  • main god domain
  • main god attribute
  • second god domain
  • second god attribute
  • preferred sacrifice
  • how are priests chosen
  • etc.

Every influence source can have its own religion, even using gods defined by other empires. Polytheists religions are not that missionary and thus should not easily colonize other cities. They are mostly a part of the city internal social organisation.

Organized missionary religions are a next step.

Pass the flame of civilization

Being a leader is a matter of chance for a big part. The player should not be subjugated by mere chance. He must be able to continue playing but as its overlord, bringing the light of civilisation to a new center.

Restricting this to power sources of same culture might give it an interest.

Correct line wrapping labels layout

Text labels with line wrap activated show two lines but in the space of only one line. The table width should probably be set to the label before inserting it so that it can computes the correct height.

It happens with:

  • whelp menu when selecting destination for a tribe or army
  • long notifications, for instance discoveries with many effects

Add effects to most discoveries

To matter in the gameplay, a discovery must have an effect on influence. Thus most should use the

Are currently implemented some cost reductions depending on terrain type. We could also have some source power bonus.

Some major discoveries may provide bigger bonuses to the user, balanced by a malus. For instance "cart" discovery may increase cost for mountains and hills and reduce cost for plains.

Clarify key concepts

The gameplay is quite obscure at the moment: different numbers are modified from discoveries that are not clear at all for player. Initial behavior is to align almost every thing as percentage but it is clearly not working. Their behavior should be simplified in core model and appear in UI:

Influence model

  • influence is the strength of the empire control on every tile, decreasing from the tribe/village/city source
    • shown when selecting a tile
  • terrain cost is the minimum influence required to control a tile
    • shown in discoveries screen
  • military power is an help to increase influence in focused situations (wars, territory near armies)
    • shown on armies button, per armies in armies screen
  • growth is the increase of influence power per turn (should try implementing it as a simple mille value applied every turn)
    • should be shown (+x/turn) next to current source power
  • stability is the limit to the area covered by influence
    • detailed in policies screen
  • instability is the missing stability and a chance for revolt when superior to a tile influence
    • shown on policies button
    • detailed in policies screen

Discovery model

  • discovery progress is a percentage of the points for next discovery, increased from a base level + tiles of a certain type depending on the discovery + bonus from past discoveries
    • shown on discoveries button
    • should be detailed on discoveries screen
  • discovery bonus is added at each turn to discovery progress
    • should be shown on discoveries screen

Have different discoveries for different empires

At the moment any empire can make any discovery provided it has the correct terrain. It causes the different empires to be quite similar.

It also prevents some empires from progressing in the discovery set: neither forest not hills nor mountain terrains is a huge restriction that can almost never be overcame.

A solution would be to make two changes to current discoveries system:

  • only the first (or first two/three) empires could make a discovery, the following ones already researching it would fail, the other ones could not select it
  • discoveries could be learned from other empires (at a fixed rate depending on relations, borders and trade routes between empires)

Revolting cities

The design goal is for new cities to pop from distant and scarcely controlled lands.

For this we will use the empire stability mechanism:

  • it is a percentage, starting at 100%
  • lost when losing battles and changing policies
  • regained slowly over time

For every controlled tile over which influence is decreasing and lower than instability we could randomly check if the tile should revolt.

Then a revolting a new city would be created on the tile, as capital to a new empire. Its culture would be the same as the original empire one. It would start with the same discoveries/policies.

Have trade routes

Trade should be an important feature of the game. It means routes appearing on the map on which neighbouring empires get a few. The traded objects should depend on discoveries or a "production" policy.

It should be possible to pillage trade routes with armies.

Many discoveries should increase the 'trade' indicator of an empire and thus the probability the trade route pass through its tiles and the fee it gets from it.

Notify player he forgot some actions

Before passing turn, the player should be notified he did not set its flag, or select a next discovery combination.

He should be helped by a notification indicating how to do it, opening the correct screen.

If the player discards the notification he should not be asked again the next turn.

Implement diplomacy between empires

Diplomacy options should appear when making discoveries:

  • weapon -> war
  • city -> tribute ?
  • writing -> treaty ?

In fact war, tribute and treaty could even be discoveries by themselves.

They should formalize the diplomatic state between the different empires and have a direct impact on the influence on map. For instance:

  • treaty -> no influence sent above the other party on its tiles
  • tribute -> channel power from a capital to the other
  • war -> double influence increase or target on the antagonist

Have different disaster types

When power is bigger than health it gets reduced to health/2.

There should be different disaster depending on the terrain:

  • floods near costs
  • drought in plains and desert
  • storm in plains and grasslands
  • diseases

The diseases should be quite special because they would start somewhere on the map then contaminate neighbors with low health, reducing the power by a dozen percents every turn.

Have end game conditions

What is a game without a possible victory?

The game should end at some point:

  • count years and stop at a max time (end of antiquity as long as discoveries don't go further)
  • have only one leading empire on the map
  • discover all the coded discoveries

Center on player city at game start

When starting a game (all defaults) the screen should be centered on his capital city, not on a random one.

If there is no human player, at least center on first AI empire city.

I bet the issue is in OverworldScreen code.

Save and load games from files

Games should be saved in json format. Having a human-readable format will help debugging.

Main menu must include buttons to load an existing game. Pause menu will have a button to save current game.

Military power should help against instability

Having a huge military power should help counter instability.

Should it reduce instability by total military power or only the part that is not used by armies on map?

Second solutions means the player must chose between creating more armies (and thus more control on extension) and having less revolts.

Separate discoveries and policies screens

We need a different screen to show

  • discoveries
    • last found one
    • researched one or list to choose (already exist in discovery screen)
    • menu link shows progress to next discovery (already done)
  • policies
    • list all available ones (already exist in discovery screen)
    • menu link should show current stability (decrease when changing policies, grows slowly to 100%)

Fog of war

The game is about discovery. Discovering technological/social/scientific/practical things.

It should also be about discovering the map.

The fog of war should hide territories outside

  • player empire
  • its neighbors
  • the empires it has a relation with
  • the tiles that once belonged to player empire

In fact it could simply be a list of tiles whose 'discovered' ones are removed.

Make battles between armies at war

At the moment armies are pretty useless: they just act as secondary sources. It makes wars pretty boring. This should be improved by letting armies have a larger influence when actual combat takes place, like it does in reality with the great conquerors of old.

When two warring armies stand on neighbouring tiles at the end of turn the smallest one should be destroyed. The victorious army power is reduced from the defeated influence on the tile and added to the victor influence on the same tile. An army symbol appears on the tile and a notification is issued to both involved parties.

Warring armies are armies

  • from empires at war with each other
  • armies from different empires both one empire tile (entering an other empire tiles is an act of war even if formal War was not discovered)

When an army neighbours a warring empire capital, the capital influence on its tile is reduced by the army power.

Both these new mechanisms should help submit enemy cities.

Add wild species for modern food

Following reading of Guns, Germs and Steel by Jared Diamonds, it would be interesting to discover the wild varieties for modern corn, wheat, etc. They would be pre-requisite for their domesticated counterpart, the modern version being also much more potent in terms of growth.

It would be a good occasion to also add all the other cereals and pulses mentioned in the book as staples of some civilizations food production.

Vassals should try to revolt

At the moment, once vassalized an empire will stay as such even if the main empire is stroke by a disaster.

It should re-evaluate the related forces from times to times.

Move armies on the map

At the moment the only impact of the player on the map is the "flag" he can set on some tile.

It should be replaced by armies, or forces:

  • start at the capital
  • can be moved to any flaggable tile, one tile per turn
  • once arrived increase influence on the tile, serve like a secondary influence source, its initial power being the player military power
  • can move to other players tiles only if at WAR
  • two armies from different empires on the same tile should trigger a battle:
    • compare military power + die (1-6) for both empires, the greater wins
    • losing one is "killed" (spawn back in capital with slowly growing power)
    • lowing one gets a stability malus
    • vanquished empire gets an influence loss on adjacent tiles

Then we may improve the mechanism by allowing user to customize army composition and have multiple armies with lower military power...

Must generate a main island at map center

Having multiple islands separated by large chunks of water is pretty boring without the mean to move over water to discover other continents.

The map should be generated with a main island, and maybe smaller ones close around.

Create and propagate religions

Religions are two-fold:

  • it is a cultural feature than can propagate from its source
  • it can be chosen by an empire as its official cult

When choosing a religion an empire can also change one of its parameters.

Religion parameters

Type:

  • Animist
    • best stability
    • reduced growth
  • Veneration of the dead (Shintoism)
    • better stability
    • low cultural assimilation
  • Polytheist (Ancient Greece or Egypt or Rome...)
    • let choose a prefered gods trinity (for instance the Warrior, the Wife and the Trader) giving bonus depending on chosen gods
  • Dualist (Manicheism)
    • better stability
  • Monotheist (Judaism, Christianism, Islam)
    • greater propagation
    • Allow religious war

Attitude to other religions:

  • Integration
  • Tolerance
  • Specific status
  • Intolerance
  • Inquisition

Values

  • Hard work
  • Spiritual life
  • Wealth
  • Family
  • Victory in battle

Notify player when a new policy is available

When a new policy is available the player cannot know it.

A notification should be displayed everytime a new policy is discovered. It should be blocking if it is the first policy of a type discovered by the player.

Allow to change selected research

ATM when the player selects a research he can no longer change it, even in the same turn.

It can be frustrating, so he should be able to change it between selection and ending turn.

Only have one influence source but vassalize new ones

At the moment a "conquered" source will be quite indistinguishable from the main one.

In fact the conqueror should have two choices:

  • destroy the conquered, for instance if it estimates it too close from its own
  • enforce some diplomatic state on it (treaty, tribute, etc.)

It would be a nice touch to have on screen an indication a city is tributary to another one, maybe some flow from the vassal to the overlord, like the links between policies in the Democracy games. Or a secondary color?

Add classical greek/roman discoveries

Buildings like theatres, amphitheatres, temples, aqueducts, etc. could increase city growth rate.

Policies like republic, democracy, oligarchy, gerontocracy, citizenship, city leagues, elections, etc. could impact city growth rate, stability and military power.

Sciences like logic, history, geography, philosophy, etc. could improve the discovery rate?

Have a correct logging system

The application logs in sysout: it won't be correct for gamer use and it does not help development that much.

It should be replaced by a proper logging system, allowing to log in console or file, and showing for a log line its time and source logger.

I'm still not sure what API to use. @GaetanVaysse do you have one to suggest?

Have a map mode with tiles colored by influence

In a map we need a map overlay where tiles are colored according to their influencer empire color. It should be clearer than the simple border.

The alpha channel should depend on the ratio between the influence on tile and the source power. It will show the weak points.

Technically speaking, the overlay information should be cached between turn chances, just like the influence zone borders are.

Provide an installer or an executable

It must be possible for a desktop user to

  • download an executable file
  • install it (optional)
  • launch the game

Two versions are required, one with JVM and one that use the one already installed on the computer.

No action on most turns

In game current state nothing (except for influence spread) happens on most of the turns. In a turn-based game it is boring not to have actions to make at every turn. Consequences from previous actions would be fun too.

On the discovery mechanism, maybe instead of selecting a discovery and waiting for it to end the player could select every turn a direction in which to investigate. It would have a change to cause a new discovery, or nothing may happen (or previous discoveries may be reinforced).

The policy mechanism effectively permits to make choices, but once done there is little incentive to modify them. Maybe the player could be asked to choose a policy type+discovery every few turns, with an incentive not to re-use the same old policy.

An other idea would be to have an event every turn, the kind of event being selected randomly from the different stats of the player (depending on discoveries and policies).

Having the possibility to create armies from start would also provide something to do to player. Maybe the cities could move slower (and on greater distances) with an obligation to get as far as they can until they settle and the armies could move faster (1 tile per turn).

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.