Feedback and Suggestions

There is possibly a map or array holding fathers assigned to players. To allow AI and Human reuse the same father I would probably need to allocate a map per each player and store/load this info in saved game too. Anyway, thanks for info.
CvGame::setFatherTeam() in CvGame.cpp. It stores the ID of the team owning the father to m_ja_eFatherTeam, which is a just-in-time array. JIT arrays is something I added. They behave mostly like normal C style arrays, but they have automated memory allocation as well as functions for savegames.

What would likely be needed instead would be a JIT array of PlayerBitmap. It will then provide one bit for each team, which is enough to tell if a team has the father or not. Storing this data isn't the issue, nor is adding it to the savegames.

The real issue is that some parts of the code assumes fathers to only be present for one team. This mean it will be needed to locate everywhere it is used. One example would be where it skips asking if you want some FF if it is already owned by another team.
Maybe the easy way would be to alway return NO_TEAM for CvGame::getFatherTeam() and add a new one for a team asking if this team has the FF in the argument.

We would also need a game option to tell if FF should be per game or per team as well as saving all this in savegames.

I don't see any reason why this shouldn't work. It might be a bit of a task for somebody, who is new to the source code, but then again it could be considered a decent introduction to the code ;)

I'm not quite sure what to do about the array telling which turn each FF joined teams. Maybe add one for each player. Remember JIT arrays use 8/12 bytes if they only contain default data meaning adding arrays, which aren't always used will not eat up memory.
 
Right, it seems like invisible unit attacked you when you moved to plot (no visible battle process). Didn't know that hidden units exist.

Did this plot have a Goody? There is in M:C and Vanilla a random chance that your units can be "Ambushed". You will get a message saying your unit has been damaged. Is this what happened?

I looked into the code and didn't see any place were a unit could be "hidden" otherwise. If an actual unit was hidden then you would see the combat when it came out of hiding.
 
It could be a 'goto' and fog of war situation, I have had occasions where I have told a unit to move say 2 squares to somewhere, and in that square is an enemy and combat is auto initiated and my unit gets killed, because I have not been able to 'assess' the combat chances because from where the unit started it couldn't see into the square with the baddy.
 
It could be a 'goto' and fog of war situation, I have had occasions where I have told a unit to move say 2 squares to somewhere, and in that square is an enemy and combat is auto initiated and my unit gets killed, because I have not been able to 'assess' the combat chances because from where the unit started it couldn't see into the square with the baddy.

Good point. Lib.Spi't, Civics branched is merged with master so you can test it out now ;) Remember to download the new graphics.
 
oh oh oh oh oh oh!

COOL!! I gets to play without my brain exploding installing it! :D

Developer ART Files here

I assume that is the link to the up to date art files?

hmmm I am having trouble getting the link to the latest art to work...

I can get to the 2.0b movie art link, but I am guessing this is not the one with the latest art content..

the drop box link just takes me too an empty 'onedrive' screen with no files to download..
 
Nightinggale, thank you for explanation. Seems JIT arrays are combination of std::vector and serialization functionality. I got the idea and will think about safest proper implementation.
Remember JIT arrays use 8/12 bytes if they only contain default data meaning adding arrays, which aren't always used will not eat up memory.
4 bytes for pointer, 4 bytes for count, 4 for capacity -> normal practice. Is game core written in C or C++?

Did this plot have a Goody? There is in M:C and Vanilla a random chance that your units can be "Ambushed". You will get a message saying your unit has been damaged. Is this what happened?
I faced the event two times only. As far as I recall, message had string "damaged". It's not a problem if event has chances to occur only on Goody plots.
 
Nightinggale, thank you for explanation. Seems JIT arrays are combination of std::vector and serialization functionality. I got the idea and will think about safest proper implementation.

4 bytes for pointer, 4 bytes for count, 4 for capacity -> normal practice. Is game core written in C or C++?


I faced the event two times only. As far as I recall, message had string "damaged". It's not a problem if event has chances to occur only on Goody plots.

Oh yeah, Night, ethernidee here says he is a programmer:crazyeye: He can probably understand your jargon better than me ;)

It is written in C++. You should get with Nightinggale about starting a new branch for your changes. Night is planning on moving our code to Steam Source site, so he'd want to hold off on any new branches till he gets that done I believe.
 
It is written in C++. You should get with Nightinggale about starting a new branch for your changes. Night is planning on moving our code to Steam Source site, so he'd want to hold off on any new branches till he gets that done I believe.
Oh, that's not necessary. Git allows solely local branches which are enough for short-period experiments :)
 
Nightinggale, thank you for explanation. Seems JIT arrays are combination of std::vector and serialization functionality. I got the idea and will think about safest proper implementation.

4 bytes for pointer, 4 bytes for count, 4 for capacity -> normal practice. Is game core written in C or C++?
https://github.com/Nightinggale/Medieval_Tech/blob/master/DLL_Sources/JustInTimeArray.h
The comments in the top is likely a bit out of date though as I have heavily modified it compared to the original concept.

The core idea is implemented with the member functions get() and set(). You use those and pretend the array is always allocated. If it isn't then you will get the default value.

The 8/12 bytes are:
4 bytes: pointer
2 bytes: length (knowing which length to allocate with new)
1 byte: array type, which tells what kind of data is stored (types of unit, building, promotion etc)
1-4 bytes: default value, which is of the template size.
The last mean the array uses 8 bytes when it stores (unsigned) chars while it is 12 otherwise. Technically it can be 16 bytes, but we don't have arrays of 64 bit variables. I'm not even sure we use those at all.

Another very important feature is being able to load from savegames. Say we save that player 0 has FF 17. Somebody adds two new FFs and on load JIT figures out that the FF type, which was 17 on save is now 19 and the array will give FF 19 to player 0. This mean JIT arrays are THE way to save arrays if content is affected by XML. This is something I finished and merged into master branch today.

Oh yeah, Night, ethernidee here says he is a programmer:crazyeye: He can probably understand your jargon better than me ;)
Wow, he is a keeper :assimilate:

Night is planning on moving our code to Steam Source site, so he'd want to hold off on any new branches till he gets that done I believe.
I just finished making a new project on Sourceforge https://sourceforge.net/projects/colonizationmodcollection/
Next is adding our code. I want to split the source code away from M:C and make a submodule for the code alone. That way all mods can import the code. Looks great in concept, but splitting one git repository into two without having lots of garbage data history isn't something I do every day. The repository on github uses 250 MB by now btw. I'm sure we can get the source code of plain text files to use way less than that.
 
argh poop...

I cannot find the latest art, and when I tried to start the game without it, I got a crash before loadup was complete.

EDIT:
I also just loaded up vanilla to try and load medi mod again and I have no text :D

did I read about you having the same issue Kail?

do you have the steps of what you clicked to get the text back :D
 
I also just loaded up vanilla to try and load medi mod again and I have no text :D

did I read about you having the same issue Kail?

do you have the steps of what you clicked to get the text back :D
Edit CivilizationIV.ini and change the language number to 0, save and start the game.

Looks like we really need to solve this issue.
 
argh poop...

I cannot find the latest art, and when I tried to start the game without it, I got a crash before loadup was complete.

EDIT:
I also just loaded up vanilla to try and load medi mod again and I have no text :D

did I read about you having the same issue Kail?

do you have the steps of what you clicked to get the text

What you mean by can't find art, was the link broken?

Did Nightinggales suggestion work?
 
the drop box link just takes me too an empty 'onedrive' screen with no files to download..
yeah that link just takes me to a screen by larry ted mcbride who isn't sharing anything...
which seems a touch rude to me!!

that was where the link took me.

I will try Night's suggestion for a fix in the morning, it is time to get to bed now :)
 
the drop box link just takes me too an empty 'onedrive' screen with no files to download..
yeah that link just takes me to a screen by larry ted mcbride who isn't sharing anything...
which seems a touch rude to me!!

that was where the link took me.

I will try Night's suggestion for a fix in the morning, it is time to get to bed now :)

Ok, I am knew to this dropbox. Try this link M:C Dropbox Art Link
 
Ok the ini fix worked.

I am clearly messing something up with the art, I think I am missing some of the original art that I should have, I don't have the medieval back ground, and it crashes when I go to select a leader, so i am clearly missing some leaderhead art too...

I have a vague recollection of doing this before, but I can't think what bit I need to download to fix it..

Also I got the three folders from dropbox this time so yay!

I think I will come back to solving this at a time that I am feeling a little less like poop :)
 
Back
Top Bottom