Are you, in fact, a pregnant lady who lives in the apartment next door to Superdeath's parents? - Commodore

Create an account  

 
Coding Plan

Hi!

I'm abusing this forum to write down my planning process and progress. You're my post-its now!

The plan and questions

-fonts
I need a way to print strings onto the screen
-city screen
Problems to tackle: city layout, city info, setting worker/farmer ratio, production item changing, buying, minimap, garrison display, texts
-production change screen
Problems to tackle: how to collect available items
-recoloring
City flags need recoloring. This is done with palette manipulation in the original, but I have to do it by hand. Find out what else needs recoloring.
-AI
We need some AI for neutral cities anyway, so why not add AI players.
-config files
Oh boy, so many unanswered questions. This might need ts own post.
-magic screen
Problems to tackle: sliders
-spell screen
Problems to tackle: displaying book, shifting pages
-spell research screen
Problems to tackle: find out how the unresearched spells are printed
-map generation
Problems to tackle: how to generate a nice map. Should this be the same as the original? Should mapsize be the same as original?
-combat
This is also its own postworthy. Should combat be a spectator sport?
-diplomacy
Most original stuff wont work between players. We need new options? Or shuold this be skipped?
-nodes
-fog of war
-spells
Im unsure wether all spells would fit a config description. I aim to not hardcode spells.
-special abilities
Same problems as with spells, but mor elikely to succeed.
-UI separation
Maybe this should be its own project? Or should this be skinnable?
-graphics loading
-advisors
Should there be a script that you could apply to cities, to cut down on micro?
This might be needed as otherwise turns can drag on, especially with multiple players
-save game
-off-turn commands: these will be cached and replayed whenever
this allows to micro cities when not the playerrs turn-> how to display?
-enlist people with different skills to help the project
Needs: document to follow, tools to use
-client/server versus peer-to-peer
Currently the game is peertopeer, with all participants keeping in sync. Is there a good reason to switch to a client/server architecture?
-towers of wizardry
-roads and enchanted roads
-items and item creation


Any input on these is welcome!
Reply

Ok I updated the binary download.

New feature: city screen. It lacks the minimap part and the cityscape, and any production capability whatsoever, but you can see your farmers/workers/rebels, and switch between them.

I have a little trouble with TortioseSVN, thus I was unable to refresh the code, anyone have any experience?
Reply

Its unfortunate that i cannot help, coding is not my thing. Needless to say i wish you luck.

Never tried the game in Multiplayer but i hope you won't abandon single player, this is the most addictive game on my Android phone right now.

Maybe if some 2d art is required assuming no coding is involved, though not sure how to handle pixel art and stay faithful to the original and what is the target resolution, also what sort of art will be needed (Terrain ???, units ???.... etc).
Reply

VM Wrote:I have a little trouble with TortioseSVN, thus I was unable to refresh the code, anyone have any experience?
Kind of, long ago. What's the problem?
Reply

I hope there'll be a strong focus on single player, MoM would play slooooowly in multi player because of combats.
Reply

Mist Wrote:Kind of, long ago. What's the problem?

So I want to check out a single file, modify and then check it in.

Also, Perforce has "reconcile offline work", wich checks for changed files, and checks them out. Does svn have similar functionality?
Reply

Single player mode will be still the main focus and for that we need mighty AI. I have extensive plans how to do that, but will take a long time until we see something really good. Beating current AI should not be hard. The new AI will not cheat and will be human-like.
Multiplayer should be also easy to do and simply seating a human player instead of an AI player.
In my view neutral AI should be wrapped into a single AI player. Neutrals will never attack each other, but will play for different objective than player AI. Neutral AI does not differentiate between other players.

Any player (including AI) can receive handicap on a sliding scale before the game begins, such as a multiplicative production/food/gold/mana/growth bonus and that’s it.

For mana sliders: current version is not perfect. Certain values can’t be taken. A fast temporary solution should be to allow typing value into a textbox. We can figure out a nice GUI based approach after the first prototype.

Map generation: use the c-evo template first. Player should be able to specify amount of land, size of map, etc. Regarding the algorithm, make it easy to replace, just put one up. I can help you to create better random generation later since this is not urgent.

Combat: only player who plays combat should be allowed to watch it for now. AI-AI combat will also be played out. For debugging purposes it’s important to be able to watch that, hopefully with some easy debugger that shows line by line which statements are executed for AI decisions. Without that it’s suicidal to develop AI.

Diplomacy: major change from old version. As a start, use current C-evo solution. At most 2 items are offered in a deal and 2 items can be asked for, which is weighed by AI or other opponent and simply accept/reject the proposals. I think that for turn based multiplayer diplomacy it may help to not notify receiving player immediately when diplomatic actions are initiated by someone else. The diplomatic proposal is presented at the beginning of the receiver’s turn. At that time immediate decision is required in yes/no format. This will limit the number of proposals from player to player to 1 per turn. This is a great time saver and abuse reduction. AI is also hard to program for smart diplomacy, so it will make AI stronger.

Unfortunately, I currently do not see hot to repeat this idea in battle. Battle must be synchronized, so attacked player gets chance to play it or delegate defense to AI, which I do not expect to be desirable for a long time, but option should be there.

Fog of war stays as is, but it must be graphically displayed as well.

Spells, units, etc. will be surely modded later. They should be in configuration files or easy to change modular format. Their number should also not be limited. More units, more spells will be added later.

Advisor is a total skip for now. Very time consuming and almost useless. This can be done much later.
Creating city build order templates, like in C-evo maybe OK, but I think that should wait too.

Since MOM is essentially a single player project, I think even the multiplayer should focus on only 2 human players and only increasing the maximum number of players to 8. Those could be all humans, but focus of making it efficient for 2, and possible to play by 8 (humans or AI). 8 includes a buffer, since I really think 6 should be optimal.

Off turn city management actions are great, but those will be stored as plans only. Once the actual turn arrives, simple UI will allow execution of those, which are still possible to do. For example, you may have lost that city you were trying to manage. Making changes during player’s own turn must be allowed.

Client server is a must! Server does game state and clients do not receive full information about game state. This will make cheating, out of sync, and running different versions of the game very hard. It has additional benefits too.

Enlisting people for help is important. You can create a basic how to document. You can create very basic tasks to do by nonprogrammers. Mod ideas should not collide. Everyone, please do not bombard with colliding mod ideas now. It should be done after we have a demo version. For AI I need one specific version that is very stable and balanced. I do not wish to program it if that does not exist. I assure you that I read every single post here and I know about all mod ideas that were presented here. In principle, everything is possible to do, but having a first demo is common interest.

For now, I think best help would be if you went to the source and try things out what VM already uploaded. Report back if something is good or bad and why.
Reply

VM Wrote:So I want to check out a single file, modify and then check it in.
That's not an usual method of working with SVN, but yes, should be possible by using checkout depth. The thing to remember is that anonymous checkouts can't commit changes, so you need a non-anonymous one to do anything.
VM Wrote:Also, Perforce has "reconcile offline work", wich checks for changed files, and checks them out. Does svn have similar functionality?
Yes, Diff tool does this.
Reply

Quote:That's not an usual method of working with SVN

OK so what IS a usual method of working with SVN?
Reply

VM Wrote:OK so what IS a usual method of working with SVN?

I meant the "check out single file bit". Usually you check out the whole project/branch you're interested in, even if you aim to work on a few files only. This way if someone else decides to revamp file structure you don't find yourself with an empty folder after a synch. Generally only reason I think people would want to check out less than a full project is bandwidth limitation on a really big and actively updated project.
Reply



Forum Jump: