BTS Unaltered Gameplay Project

Status
Not open for further replies.
I read the docs on SVN on SF.net and it says you don't need an account for read access. It says you shouldn't even be asked for a username or password.

What error message are you getting? Are you using HTTPS? The correct URL? Tortoise or some other client?

Maybe Civ is not writing to PythonErr.log because you have it showing the exceptions in popups. Try hiding them and see if it writes the log file. Either way is fine with me, I just find it easier to cut-n-paste from the log file than using a screenshot.
 
I'm using the link from SourceForge. Whenever I use Tortoise to download the files, it asks for a Username and Password.
I can't do anything now unfortunately as I'm on a different PC. I'll check the URL in the morning to see if I'm using HTTPS by accident.

How do I turn off pop-ups?
 
Whenever I use Tortoise to download the files, it asks for a Username and Password. . . . I'll check the URL in the morning to see if I'm using HTTPS by accident.

You want to use HTTPS, but if you copied the link from SF.net, it should be already. Double-check tough. Otherwise, could you email SF.net on this? We're going to want the public to be able to grab the latest version if they want. Also PM me your SF.net account name.

How do I turn off pop-ups?

Set the following to 1 in CivilizationIV.ini.

Code:
; Set to 1 for no python exception popups
HidePythonExceptions = 1
 
What was in the log file I sent? Anything related or just irrelevant stuff?

I haven't found the PythonErr2.log file to be useful yet. I think it just shows that modules are being loaded, but not why they fail. The why is all in PythonErr.log and the exception popups (same information).
 
I've committed the porting of AutoLog. Note, I haven't had any chance to test it yet. Hopefully I can get to that later tonight.

If it causes you any problems, simply remove its creation from CvCustomEventManager -- comment out the lines

Code:
import autologEventManager

and

Code:
autologEventManager.autologEventManager(self)

and restart Civ.

I also had to update the INI file, so you'll lose your settings unless you copy over the [Autolog] section, replacing the existing section in your file.
 
@ruff - Another feature I use alot is Export. This will allow you to export your CustomAssets foler to the BTS folder very easily, and if there is a screw up in the file then just revert to the previous revision and re-export to test if that is working.

@EF - I'm using the original version of BTS, and waiting for a stable release before I update. I remember all the headaches I had on updating too soon in the past. And the MOD is working perfectly. Is everyone else using the 3.02 patch? If so, I think we can claim this as a BTS complete MOD instead of having to have a different version for each version of BTS. Will be testing the new revision tonight.

@nik - was looking at SF's page, and it says anyone can access it with a SVN client. Make sure that where you put your username/password is blank. If that doesn't work let me know. I do know you can access directly from the website, using https.

On PLE the additions I'd like to see are:

Button to use multiline instead of single line with scroll for units.
Button to group Units by unit type.
Button to group units horizontally by unit type.
Button to select all units on tile.
Button to select units of same type in tile.
Unit action indicator. (If it's moved, forted, etc...)
Promotion Indicator
Upgrade Indicator
Mouse-Over tool tips.

These are the ones I feel are the most important. I don't think we need all the filters, even though they were a nice little touch, and some of the promo/upgrade stuff is over kill.

Anyone else want to add or remove from this list?

And has anyone seen Ket lately? He seems MIA.
 
On PLE the additions I'd like to see are:

My comments on these items:
  1. Button to use multiline instead of single line with scroll for units. - already in native BtS
  2. Button to group Units by unit type. - if we do this we will need to totally re-write the unit selection code, do we want to do this?
  3. Button to group units horizontally by unit type. - if we do this we will need to totally re-write the unit selection code, do we want to do this?
  4. Button to select all units on tile. - already in native Civ4 (hold down the ctrl key and click on a unit)
  5. Button to select units of same type in tile. - already in native Civ4 (hold down the alt key and click on a unit)
  6. Unit action indicator. (If it's moved, forted, etc...) - agreed, see my mod for artwork and code
  7. Promotion Indicator - agreed, see my mod for artwork and code
  8. Upgrade Indicator - hmmn - maybe, not so fussed either way
  9. Mouse-Over tool tips. - what extra do you get?

I liked the ability to select all injured units - can we add a keyboard combo and mouse click to do this? Say, hold down Ctrl-Alt and click on an injured unit. The alternative is some quick way to tell which units are injured. Sometimes the health bar is so close to fully healed I cannot tell if it is full-strength or slightly injured.
 
I'm getting a major error in version .10 and version .11

Traceback (most recent call last):
Code:
  File "CvScreensInterface", line 739, in forceScreenRedraw

  File "CvMainInterface", line 800, in redraw

  File "CvMainInterface", line 1806, in updateGameDataStrings

  File "CvMainInterface", line 1925, in updateTimeText

RuntimeError: unidentifiable C++ exception
ERR: Python function forceScreenRedraw failed, module CvScreensInterface
Traceback (most recent call last):
 
BtS already has ctrl-H to select all injured units. The problem for me is -- and maybe I'm just overly micro-managing my stacks -- is that I want to have units move on once they have healed fully. If 2 will heal in 1 turn and 1 will heal in 3 turns, I don't want all three units sitting stationary for 3 turns. PLE doesn't address this concern, but it could by having each click of the "select injured units" progressively select units that will heal in 1 turn, 2 turns, 3 turns, etc. Okay, too much work, so drop that idea. :)

I've only used Ruff's mod, so I haven't seen the real PLE in action. I have the BtS version and will check it out later tonight. However, the readme is pretty expansive.

I've added my level of desire after each entry in the ToC, partially based on how much work I think it will be. On a certain level, extracting a portion might actually be harder than including the whole thing.

Spoiler Table of Contents :
1.) Enhanced unit buttons in the plot list - high
2.) Mouse over info pane of the unit buttons in the plot list - medium
3.) Unit/group selection in the plot list - nothing (fixed in BtS)
4.) Plot list display modes - low (I like the separate line per unit mode)
5.) Plot list unit filters - medium
6.) Plot list grouping modes - low (the group sort sounds cool)
7.) Plot list uprade View - low
8.) Plot list promotion View - low
9.) Move highlighter - low because current version has a bug and it might be slow
The upgrade and promotion views sound interesting but don't add that much to BtS.

Spoiler Enhanced unit buttons in the plot list :
Each unit button provides you now with some additional information. This makes it easier to determine what status a single unit has, without selecting it first. Following information is implemented :

a.) Health Indicator :
the colored spot in the upper left corner is displayed in a darker color, as soon as the unit is wounded. This feature can be switched off in the ini-file.

b.) Health Bar :
At the top of each unit button, a vertical stacked bar is displayed. This stacked bar indicates the remaining health points of the unit in percent. The colors of that bar can be configured in the ini-file, as well as the display itself. The default colors are green and red.

c.) Move Bar :
At the top of each unit button, below the health bar, another vertical stacked bar is displayed. This indicates the remaining movement points of the unit in percent. The colors of that bar can be configured in the ini-file, as well as the display itself. The default colors are blue and yellow.

d.) Mission Indicator :
in the lower right corner, the units actual mission is disaplyed. The following mission types are indicated :
FORT (blue) -> unit is fortified
PAT (light blue) -> unit is at air patrol
GOTO (light green) -> unit has a goto command.
EXP (dark green) -> unit is at exploring mission
HEAL (light red) -> unit is in healing mode
SEN (yellow) -> unit is in sentry mode
SKIP (light gray) -> unit is skipped in current turn
AUT-B (orange) -> worker is automized
AUT-C (orange) -> worker is automized for a city
AUT-N (orange) -> worker is automized for building a trade network
The display of this mission indicator can be switched off by ini file.

e.) Promotion Indicator :
A unit which can be promoted, is displayed with a light blue frame in the plot list. This indicator can be switched on/off in the ini file.

f.) Upgrade Indicator :
A unit which can be upgraded to any other unit, will get a small orange up-arrow in the lower left corner of its unit button. The arrow is displayed regardless if you have the money for the upgrade or not. This indicator can be switched on/off in the ini file.

Spoiler Mouse over info pane of the unit buttons in the plot list :
When you move the mouse over any unit button in the plot list, an info pane is displayed on the left side of the screen. This Info pane has been been modified in the following places :

a.) Remaining movement points :
The remaining movement points of the unit are displayed as a floating value with 1 decimal

b.) Strength + Turns-To-Heal
The current unit strenght is displayed as a floating value with 1 decimal. In case the unit is wounded a third value is displayed in brackets. This number indicates the number of rounds the units need to heal completly under the current circumstances. This circumstances takes consideration of city building (like hospital), the unit's promotion (Medic, or any other promotion with self heal abailites) the promotions of units on the same or adjacent tiles, the territory the unit is on.

c.) Specialties
The special abilites a unit gains due to a promotion are displayed in a different color than the specials it gains due to its unit type. The color can be modified in the ini file, the default color is light gray.

d.) Experiance
The unit's experience points are displayed in the following format : <curr-exp>/<needed-exp>. Where <curr-exp> is the units current experience points and <needed-exp> is the units needed experience points to get the next higher level. Both values are only displayed if the unit has an experience value > 0.

e.) Level
The unit's level is displayed in the following format. : <curr-lev>/<possible-lev>. Where <curr-lev> is the unit's actual level and <possible-lev> is the level the unit could have due to its expereience points. In other words : the first value shows the number of promotions the unit already has, the second value shows the number of promotion the unit could have. Both values are displayed, as soon as one of the values is > 0.

Because this info pane has to be reprogrammed completely new, the layout differs slighly from the built-in one. There may also be soe differences in the infromation I haven't documented herer. If so, please contact me.

Spoiler Unit/group selection in the plot list :
The selection in the plot list has also been improved by eliminating some bugs of the Civ4 standard verion :

a.) Civ4 bug : when selecting a unit on the very right the plot list is rebuild so that the selected unit is at position 10 in the plot list -> fixed
b.) Civ4 bug : under some special circumstances the scroll arrows did disappear -> fixed
c.) Civ4 bug : when selecting a unit with Alt-key pressed, all units should be selected. Because it is not possible to put units with different domain type into one group, always the first domain in the plot list is selected. -> fixed. All units with the same domain type as the selected unit will be put together into a group.

The rest of the selection method is pretty much the same as before :
- Shift : to add single units or their groups to the selected group
- Ctrl : to select all units of the same type
- Alt : to select all units of the same domain type.

Remark:
The main problem of the complete mod was to modify the unit selection in the plot list. The existing API function CyInterface.selectUnit() and CyInterface.selectGroup() are quite a mess. You have no chance to create a selection group without the function CyInterface.selectGroup(). The problem with that is, that this function doesn't have a any parameter for a unit. It directly checks the existing units on the plot and takes it decisions, so that you don't have any influence to it. Because I want that the selection groups doesn't select any unit which is not disaplyed due to one of the display filter, I had to make several crazy program climbs (you can watch them in the selectGroup() function in the PLEMainInterface.py). Main method to avoid those things is to temporarily move away (with CyUnit.setXY()) those units I don't want to be added to the group, create the group witht CyInterface.selectGroup() and then move back those "parked" units.
Due to that changes it might be possible, that there are some error in I havn't catched so far. Also, the behavior of the complete selection functionality could be slightly different to that you know. If you found any problems, just inform me, please.

Spoiler Plot list display modes :
To improve the display of a large ampunt of units on one plot, I added some disaply modes :

a.) Standard mode :
The units are displayed in one vertical line with scroll buttons on the right side. As already mentioned in chapter 3., the bothering bugs with the display have been eliminated.

b.) Multiline mode :
All units are disaplyed in several lines, so that there is no scrolling needed. The display starts in the lower left corner. Using this view, no scroll buttons are needed, except you have so much units on one plot, that the screen height is not enough to display them in multi line view. In this case, vertical scroll buttons (up and down arrow) are disaplyed.

c.) Vertical stacks :
Dependant on the grouping mode (see chapter 6.) some units are disaplyed in vertical stacks. You can scroll left an right with the scroll buttons. In the unit type grouping mode, units of the same type are displayed in a vertical stack, in the selection group grouping mode selection groups are displayed in a vertical stack.

d.) Horizontal stacks :
Pretty much the same as the vertical stacks with the only difference, that the stacks are horizontal oriented. You may now ask what that is for. Two reasons. First: because of the different screen ratios this option may be better than the vertical stacks (you have smaller stacks, but more lines). Second : it was fun to do it ;)

Spoiler Plot list unit filters :
There are several unit filters added. You find them next to the display mode buttons. The following filters have been implemented (the button in brackets) :
a.) Wounded untis (red cross)
b.) Healthy units (green cross)
c.) Domain filter air units (plane)
d.) Domain filter sea units (ship)
e.) Domain filter land units (car)
f.) Domestic units (house)
g.) combat units (tank)
h.) player units (green flag)
i.) foreign units (red flag)

An active filter is displayed with a red frame. By default all filters are inactive (-> no frame). Also all filters are EXCLUSIVE filters. That means, if you press a filter button the belonging units are NOT displayed.

Spoiler Plot list grouping modes :

There are two groping modes implemented. The grouping modes have influence in the order the units are disaplyed. If a stack display mode (vertical or horizontal) is selected it also have influene, to what is displayed in a stack :

a.) Unit type grouping (the button with the 3 squares which are behind each other) default grouping mode) :
In simple words : the units are sorted as in Civ4 Standard. When the display mode is a stack mode, then units of the same type are put into one stack.
In more complex words :
The grouping is done by unit type. That means that the untis are sorted by the following order :
- Player. Order : player units, then all other players in the order of their player id.
- Domain. Order : sea, air, land
- Combat strength. Descending order(-> means strongest first)
- Unit type. Order by unit type id, descending
- Unit level. Order descending.
- Unit experience. Order descending.
- Unit ID. Order ascending. This is just added to get a reproducable sorting in case anything else isn't unique.

ATTENTION :
There is one exception for the sorting : cargo'ed units. As soon as a unit is cargo of another unit, the cargo unit is always displayed BEHIND its transporting unit. Within the cargo units, the sorting is as mentioned above. This is as in Civ4 standard, but has some effects to the stacked views modes : cargo units are displayed together with their tranport unit in the same stack, where the cargo units are on top off their transport unit.

b.) Selection group grouping (the button with the square and the triangle in brackets) :
In simple words : the units which are in the same selection group are displayed together. Also the selection groups are displayed right most wihtin their domain. When the display mode is a stack mode, then units within the same selection group are put into one stack.
In more complex words :
The above grouping is slightly changed :
- Player. Order : player units first, then all other players in the order of their player id.
- Domain. Order by sea, air, land
- Selection group : Ascending order by their internal group id.
- Combat strength. Descending order (-> means strongest first)
- Unit type. Order by unit type id, descending
- Unit level. Order descending.
- Unit experience. Order descending.
- Unit ID. Order ascending. This is just added to get a reproducable sorting in case anything else isn't unique.

Again, cargo units are displayed together with their transport units. This view is ideal to create complex selection groups.

Tip : try the "Group" grouping and create selection group by selecting single units holding the shift key down. Looks funny ;)

Spoiler Plot list uprade View :
The upgrade view (button with the up-arrow) can be used, to get a clear overview about the units which can be upgraded. It also provides a simple method to upgrade a bunch of units without selecting each unit first.
When you press the button only units which can be upgraded are displayed in one line. If you also have a stack view active (important!!!), above each unit its possible upgrades are dispalyed. The upgrade buttons are disable (displayed, but you can't push them) you don't have enough money to perform the upgrade.
By pressing one of those upgrade buttons, the belonging unit is upgraded to that type. Usually that results in that the unit disappears from the view, because in ost cases only one upgrade is possible. If you press the ctrl-key when pressing an upgrade button all units on that plot are upgraded, when pressing the alt-key all player units are upgraded. If you run out of money during those multi upgrades, it simply stops doing it (as it is now in Civ4).
By moving the mouse over an upgrade button, a special info pane is displayed on the left side of the screen. It provides you with the unit type related info of the upgrade and with three values in brackets, seperated by a slash. The three values have the following meaning:
- costs to upgrade one unit
- costs to upgrade all units on the plot (hold down ctrl-key)
- costs to upgrade all play units (hold down alt-key)
If one of the values exceeds your current budget, it is displayed in red, otherwise in green. The colors can be modified in the ini-file. Of course, those multi-upgrades only upgrades the units of the same unit type. eg. all bombers or all german tanks.

Spoiler Plot list promotion View :
This view (button with the "star" on it) is very similar to the upgrade view. It displayes only units which can be promoted. If a stack view is active, above each unit its possible promotions are displayed. By pressing such a promotion button, the promotion is performed and the display is refreshed. This could result in that the unit disappears from list because there are no more promotions possible, or that new promotions are displayed if the experience points of the units does allow that.
You can use the "level" in the unit info pane to check how much promotions are possible. (see chapter 2.)

Spoiler Move highlighter :
When you hold down the alt-key, hover the mouse over a plot list button, the plots the unit can reach with its remaining movement points are highlighted. For that I implemented my Move Highlighter mod. Remark : the standard version of the move highlighter which highlights the move area when you select a unit is NOT implemented. THis can be done seperatly. Refer to the related thread for that, please.
 
Further information on this error I'm having, its due to custom time and dates being used. So if this goes into custom assets any time they run a mod that alters the time and date it will blow up sky high. It seems to have "something" to do with altering the game speed info lines. In
CIV4GameSpeedInfo.xml
 
I'm getting a major error in version .10 and version .11:

File "CvMainInterface", line 1925, in updateTimeText

Line 1925 of CvMainInterface.py is

Code:
szDateGA = unicode(CyGameTextMgr().getInterfaceTimeStr(ePlayer))

Are you using a custom DLL? That's the only reason I can think of for a C++ function to be missing. This code is straight out of the original game for the most part (the C++ call at least).

Can you grab the latest version from SVN using Tortoise or another SVN client. Setting it up was actually quite easy if you haven't done so.

  1. Install TortoiseSVN (Google it)
  2. Restart PC
  3. Create a directory somewhere
  4. Right click directory, select "SVN Checkout..."
  5. Enter URL https://civ4bug.svn.sourceforge.net/svnroot/civ4bug/BUG Mod
  6. Click OK
This will net you an INI file, CustomAssets folder and Documentation folder in that directory. Just copy the first two to your Civ4-BtS folder and start BtS.
 
Alerum, were you running it as a mod? I don't think any included mods do any pickling (saving data into the saved game file). What exactly happens?

Ket, those mods must modify CvMainInterface to get it to handle their custom time format. Our mod would need those same changes. Are you running the stock BUG or a modified version? I just want to make sure the line (1925) in your copy is the one I posted.
 
BtS already has ctrl-H to select all injured units. The problem for me is -- and maybe I'm just overly micro-managing my stacks -- is that I want to have units move on once they have healed fully.
I'll need to test this but if you select all the injured units and tell them to heal, then once they are healed, they become active and ask for orders. They don't wait for the most injured to heal.
 
Ok I've debugged it to the including of a custom civ4gamespeed.xml file.

If I alter the game speed it will blow up sky high, if I remove that .xml file it is fine. It has to be some conversion (unicode?????) thats not working well with it.

In other words the line is in fact good, its just when you modify the xml it will not like you very much.

Code:
	<GameSpeedInfo>
			<Type>GAMESPEED_BALANCE</Type>
			<Description>TXT_KEY_GAMESPEED_BALANCE</Description>
			<Help>TXT_KEY_GAMESPEED_BALANCE_HELP</Help>
			<iGrowthPercent>150</iGrowthPercent>
			<iTrainPercent>100</iTrainPercent>
			<iConstructPercent>150</iConstructPercent>
			<iCreatePercent>150</iCreatePercent>
			<iResearchPercent>160</iResearchPercent>
			<iBuildPercent>160</iBuildPercent>
			<iImprovementPercent>160</iImprovementPercent>
			<iGreatPeoplePercent>125</iGreatPeoplePercent>
			<iCulturePercent>150</iCulturePercent>
			<iAnarchyPercent>150</iAnarchyPercent>
			<iBarbPercent>160</iBarbPercent>
			<iFeatureProductionPercent>150</iFeatureProductionPercent>
			<iUnitDiscoverPercent>125</iUnitDiscoverPercent>
			<iUnitHurryPercent>125</iUnitHurryPercent>
			<iUnitTradePercent>125</iUnitTradePercent>
			<iUnitGreatWorkPercent>125</iUnitGreatWorkPercent>
			<iGoldenAgePercent>150</iGoldenAgePercent>
			<iHurryPercent>80</iHurryPercent>
			<iHurryConscriptAngerPercent>110</iHurryConscriptAngerPercent>
			<iInflationPercent>30</iInflationPercent>
			<iInflationOffset>-125</iInflationOffset>
			<iVictoryDelayPercent>150</iVictoryDelayPercent>
			<GameTurnInfos>
				<GameTurnInfo>
					<iMonthIncrement>250</iMonthIncrement>
					<iTurnsPerIncrement>24</iTurnsPerIncrement>
				</GameTurnInfo>
				<GameTurnInfo>
					<iMonthIncrement>29</iMonthIncrement>
					<iTurnsPerIncrement>103</iTurnsPerIncrement>
				</GameTurnInfo>
				<GameTurnInfo>
					<iMonthIncrement>18</iMonthIncrement>
					<iTurnsPerIncrement>90</iTurnsPerIncrement>
				</GameTurnInfo>
				<GameTurnInfo>
					<iMonthIncrement>13</iMonthIncrement>
					<iTurnsPerIncrement>35</iTurnsPerIncrement>
				</GameTurnInfo>
				<GameTurnInfo>
					<iMonthIncrement>5</iMonthIncrement>
					<iTurnsPerIncrement>87</iTurnsPerIncrement>
				</GameTurnInfo>
				<GameTurnInfo>
					<iMonthIncrement>3</iMonthIncrement>
					<iTurnsPerIncrement>92</iTurnsPerIncrement>
				</GameTurnInfo>
				<GameTurnInfo>
					<iMonthIncrement>2</iMonthIncrement>
					<iTurnsPerIncrement>90</iTurnsPerIncrement>
				</GameTurnInfo>
				<GameTurnInfo>
					<iMonthIncrement>1</iMonthIncrement>
					<iTurnsPerIncrement>225</iTurnsPerIncrement>
				</GameTurnInfo>
			</GameTurnInfos>
		</GameSpeedInfo>
 
Also on the Tortose SVN I'm getting a propfind error...
 
if you select all the injured units and tell them to heal, then once they are healed, they become active and ask for orders. They don't wait for the most injured to heal.

Wow, if that's the case then bravo! My memory of how it worked in Warlords is that to keep them from moving on with the rest of the stack, you need to remove them from the stack's group by creating a group out of them. This then forces them to wait until all are healed.

I never tried a new method with BtS, and I could still have been wrong about Warlords. It's a PITA because I end up telling each unit to heal separately, and as you pointed out it's tough to tell the 90% from the 100% units by the little green bars alone.
 
Ket, is the propfind error when you access SVN, or are you getting that error in Civ4?

As for the gamespeedinfo.xml file, what exactly are you changing that causes the problem? Any change (like to one of the percentages) or only when you change the stuff about months? And does that new XML file work with the original game?
 
Status
Not open for further replies.
Back
Top Bottom