guillaume-alvarez / shapeofthingsthatwere Goto Github PK
View Code? Open in Web Editor NEWstrategy game based on hex map and discoveries
License: GNU Lesser General Public License v2.1
strategy game based on hex map and discoveries
License: GNU Lesser General Public License v2.1
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
I'm still not sure what the easiest way is to load it from json.
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.
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.
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).
When power is bigger than health it gets reduced to health/2.
There should be different disaster depending on the terrain:
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.
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.
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.
Religions are two-fold:
When choosing a religion an empire can also change one of its parameters.
Type:
Attitude to other religions:
Values
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:
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.
Diplomacy options should appear when making discoveries:
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:
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:
Achieve different purposes:
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.
If you click on a city, and you press "we want no change", and then click away again. The little popup wonn't go away before you press it.
We need a different screen to show
The gradle wrapper scripts needs to have the gradle-wrapper.jar in tree/master/gradle/wrapper; as described there: http://www.gradle.org/docs/current/userguide/gradle_wrapper.html
Could you add this jar?
The player initially sees 'NOTHING' repeated for each faction. It is clearly not intuitive and should be improved so that it is clear:
See https://help.github.com/articles/dealing-with-line-endings
Should be added in file .gitattribute
:
*.java text eol=lf
At the moment they get the discoveries list but the bonus are not applied again.
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.
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.
Revolters get for free their source tile and a big bonus on the surrounding tiles.
The bonus should only be added for tiles owned by the empire it revolts from.
When clicking on city the influence around is shown, if you go to next turn, the number are not updated. You must hide then show these again to see the new numbers.
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.
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.
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.
What is a game without a possible victory?
The game should end at some point:
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:
Then we may improve the mechanism by allowing user to customize army composition and have multiple armies with lower military power...
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.
It must be possible for a desktop user to
Two versions are required, one with JVM and one that use the one already installed on the computer.
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.
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 :
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.
At the moment the notification only shows the impacted city, also give the power lost.
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:
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.
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:
In selection menu the influence list does not show empire color, everything is black.
Maybe the base text color should be white for this libGDX feature to work?
It looks like sometimes a tile near the influence source is not influenced directly by the source. It often happen when the source is not the main influencer for this tile.
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
In fact it could simply be a list of tiles whose 'discovered' ones are removed.
Civ5 is also working this way, as well as MoO2.
It only avoids a click per turn but the game seems much more dynamic at the same time : you must be able to browse the data before making a choice, not after.
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.
At the moment a "conquered" source will be quite indistinguishable from the main one.
In fact the conqueror should have two choices:
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?
The design goal is for new cities to pop from distant and scarcely controlled lands.
For this we will use the empire stability mechanism:
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.
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?
At the moment the AI never makes use of armies.
When selecting a SelectBox widget (combo box or drop-down list) the screen flashes quickly to black before displaying again the expected content with the opened list.
It is easily reproducible in the diplomacy screen.
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?
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
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.
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.