Bug Reporting

what is the code for showing the city count? And when was it added? Is it in v3.6?

I think it was added in 3.6, and the code is Q. It should be in the hover text. ;)
 
Knowing full well that multiplayer is not the focus here, let me toss out a few more multiplayer BUG bugs that I've found:
Earlier there was the issue where only the saving player's dot maps were saved. I posted about that in the request for features thread but I thought I'd mention it here.

Now I'm playing a hot seat game. All players can see all players' dot maps. Also at first it appeared that only player 1 was getting alerts; later, when player two was the saving player and we reloaded he got some alerts but I think it stopped. Also, alerts are sent to the screen while the popup window saying "It is now Player1's turn!" is up- meaning the previous player sees all your start of turn alerts while he's passing you the computer.

This is with BUG installed as a mod.
 
After some time without CIV, I just got back to it with the latest SVN. And I have some (minor) problems.
First is some error/information messages (not sure which one) appearing at the beginning of a game, related to getting values in the dll. Since I do not have it, I believe it's normal, but still surprising.
More nnoying is the fact that, when I start CIV, I do not have access to the civilopedia (sevopedia in fact) from the main menu. Hitting the button does nothing. I tried without BUG, and it works properly, so I'm quite sure he's the culprit.
 
Knowing full well that multiplayer is not the focus here, let me toss out a few more multiplayer BUG bugs that I've found.

It's not the focus, but I certainly would like BUG to work in multiplayer if I can. I have looked at fixing the dot maps for regular multiplayer, but my initial test was less than successful. I have no idea why. I set the script data (where the dot maps are stored) on both game instances manually (using the console) and saved the game. I could no longer get the 2nd player to join the game--it just hung while trying to send the tiny save file. :confused:

I know the full solution, and it shouldn't be that hard to implement. I'll give it a go and skip the initial prototyping plan. Hopefully it will just work. :rolleyes:

Now I'm playing a hot seat game. All players can see all players' dot maps.

If you toggle the visibility (hide and then show again), do all dotmaps get drawn again? If you place dotmaps as player 2 and do the hide/show thing as player 1, do they get redrawn? I was under the impression that under hotseat, the "active player" is whoever is sitting at the computer. In fact, that should always be who the "active player" is.

Also at first it appeared that only player 1 was getting alerts; later, when player two was the saving player and we reloaded he got some alerts but I think it stopped.

Alerts aren't tied to a player at all, so I would expect alerts to be shown only to the player with the lowest ID (0) since he'll arrive at turn X before all other human players. I can hopefully fix this too. Unfortunately, the fix is to pass mod network messages to the host, but these messages don't allow text. They can contain only 5 numbers. :(

Also, alerts are sent to the screen while the popup window saying "It is now Player1's turn!" is up- meaning the previous player sees all your start of turn alerts while he's passing you the computer.

Is there something you need to click to dismiss this turn-switching message? I show alerts as soon as the player is able to move their units. Perhaps I can add a "You have alerts waiting" screen so at least the other player won't see what your alert is.

First is some error/information messages (not sure which one) appearing at the beginning of a game, related to getting values in the dll.

BUG should work fine without the DLL without reporting any error information. I'll check it out today and see if I missed something. BUG and BULL should complement each other without whining if the other is missing.

More nnoying is the fact that, when I start CIV, I do not have access to the civilopedia (sevopedia in fact) from the main menu. Hitting the button does nothing. I tried without BUG, and it works properly, so I'm quite sure he's the culprit.

Hmm, you should get Sevopedia by default from the MAIN MENU. You have to unfortunately make a small Python change to get Civilopedia, but you're saying that you get neither? I'll check it out.

Welcome back! :)
 
If you toggle the visibility (hide and then show again), do all dotmaps get drawn again? If you place dotmaps as player 2 and do the hide/show thing as player 1, do they get redrawn? I was under the impression that under hotseat, the "active player" is whoever is sitting at the computer. In fact, that should always be who the "active player" is.

I don't know the answers to these- I'll throw up a hotseat game and just test the permutations when I get the chance. I just know that when player 2 had a scout exploring player 1's territory he could see all of my dotmaps, but I had just hit "end turn" without explicitly hiding them. (Need to look up how to toggle the visibility. I just know to hit alt-X when I load a game to make them show up. ;))

Alerts aren't tied to a player at all, so I would expect alerts to be shown only to the player with the lowest ID (0) since he'll arrive at turn X before all other human players. I can hopefully fix this too. Unfortunately, the fix is to pass mod network messages to the host, but these messages don't allow text. They can contain only 5 numbers. :(

Yeep, does that mean you're going to have to basically encode the messages as numbers and translate them out?

Is there something you need to click to dismiss this turn-switching message? I show alerts as soon as the player is able to move their units. Perhaps I can add a "You have alerts waiting" screen so at least the other player won't see what your alert is.

Yes- a modal window that says "It is Player1Name's turn!" pops up with an "OK" button. The screen underneath is blank until you hit it.

I'll investigate the dotmap thing when I get the chance and report back.
 
I just know that when player 2 had a scout exploring player 1's territory he could see all of my dotmaps, but I had just hit "end turn" without explicitly hiding them.

I tested this, and the problem is as you found: if you don't hide the dotmap before switching turns it can be seen by the next player. It is storing your dotmap correctly; if the next player hides and reshows the map, they see their own dotmap. I just tested the fix successfully: I'll hide the dotmap whenever the player end's their turn in a hot seat game.

For now . . .

(Need to look up how to toggle the visibility. I just know to hit alt-X when I load a game to make them show up. ;))

Use CTRL + X to hide/show the dotmap.

Yeep, does that mean you're going to have to basically encode the messages as numbers and translate them out?

That's one possibility: break up the text message into short chunks of a few letters each and broadcast these packets to build up the full message. This is how the internet works, BTW. It's not a difficult concept, just much more work than I was hoping for.

As for seeing reminders of other players, the reason is that I flash the reminders for the current turn instead of "Hit <ENTER> to end turn". This text and the red end turn buttons aren't hidden until the next player clicks OK in that "It's your turn!" popup window.

Edit: It seems that sometimes your first reminder pops up before you've clicked that OK button. That will be harder to fix. :(
 
Ah, I was thinking of a different type of encoding, depending on how large each number can be (are we talking 5 bytes? longs? :) )- something like
1 1 4 - means "City 1 will grow to size 4."
2 1 1 10 37 - means "City 1 can whip <lookup its production> for 1 person, with 10 hammers and 37 gold overflow"

But that requires a whole translation schema, whereas the other way is tedious in its own way but workable too. :)
 
The alerts you are talking about are not a problem. They are checked in code and sent to the screen for each player. I'm talking about the reminders you can set with ALT + CTRL + R (or ALT + M) where you enter the # of turns before it should tell you and the message it should say.

For example, "whip London" in "5" turns. The player can enter whatever text they want for the message, and that's what I'll need to encode.

The numbers are most likely 4-byte ints, but since the text entered is Unicode, I could pass only two characters in each number. At least 1 number would need to be the code for "this is part of a reminder", plus another number for the player # mixed with a transaction # to piece the messages together. So I could send six characters per message.

Or I can leave it so that reminders aren't saved in multiplayer games.
 
For example, "whip London" in "5" turns. The player can enter whatever text they want for the message, and that's what I'll need to encode.
Aren't you over complicating it? Why not just store the player number with the reminder and check that the active player = the player number stored when you display the reminder.

You'll need to deactivate the 'display reminder instead of hit enter to finish turn' text for hotseat games.
 
BUG should work fine without the DLL without reporting any error information. I'll check it out today and see if I missed something. BUG and BULL should complement each other without whining if the other is missing.
Yup, I thought that; just perhaps be prepared to have a lot of people telling you they have error messages just because they look like error messages :P

Hmm, you should get Sevopedia by default from the MAIN MENU. You have to unfortunately make a small Python change to get Civilopedia, but you're saying that you get neither? I'll check it out.

I did not try to modify anything; if you tell me which line it is, I can check if the culprit is the sevopedia; but in fact, since it worked before, it looked to me like the culprit was the absence of dll, I'll try that too. But since I can have access to the pedia from in-game... aaaah, I don't know =P
 
Aren't you over complicating it? Why not just store the player number with the reminder and check that the active player = the player number stored when you display the reminder.

This is to fix Reminders for networked multiplayer--not hot-seat. I've already fixed the hot-seat issues.

You'll need to deactivate the 'display reminder instead of hit enter to finish turn' text for hotseat games.

I clear that text when the player ends their turn. That way the feature still works. I still need to figure out why sometimes the reminders for the next person popup before they've clicked the OK button to start their turn. :confused:
 
Ah, ok. That's not the problem I was talking about, then, though we had in our networked multiplayer game noticed that reminders were being showed to everyone, which it sounds like you've taken care of. What I was talking about (in case it was unclear) was that the alerts like "Paris has grown to size 5" are shown to player 1 (only) and come up while the "It is Player1's Turn!" is up, thus making them visible to the previous player while s/he is getting up from the computer.

If that was all clear, then I regret that I can't give you the 10s you spent reading it back. ;)
 
Stupid question: if I wish to try the latest svn with BULL's dll, where can I find the dll? :)

Otherwise, I investigated a little bit more: start the game, click on civilopedia, nothing happens; launch a game, click on f12, the civilopedia (the sevopedia in fact) opens; then closes the game, back to the main menu, click on civilopedia: it opens. This is with one of the latest svn.
 
We had in our networked multiplayer game noticed that reminders were being showed to everyone.

During a regular INTERNET or LAN multiplayer game, if player 1 set a reminder for 5 turns from now to "Whip London", every player would see that alert as they began their 5th turn later? That's very strange as I thought that script data was not passed between machines.

Alerts like "Paris has grown to size 5" are shown to player 1 (only) and come up while the "It is Player1's Turn!" is up, thus making them visible to the previous player while s/he is getting up from the computer.

Okay, I thought you were talking about reminders--not alerts. Well that's fine because there was a problem with Reminders as well. ;) I suspect this is the same thing I am seeing sometimes with the first reminder popup showing up while that little window is displayed. If I can fix one of them, I'll end up fixing both.

Edit: Do these alerts always show up with that little window open, or is it random?
 
Stupid question: if I wish to try the latest svn with BULL's dll, where can I find the dll? :)

You can find the source and a fairly recent build of it in the BULL SVN.

After checking out the files, copy all the files in the Assets folder over BUG's assets folder. There will be no files in common. If you have BUG installed to CustomAssets, move the DLL to BTS's Assets folder, backing up the original first of course. You can ignore the SDK folder unless you want to poke around the C++ source code.
 
During a regular INTERNET or LAN multiplayer game, if player 1 set a reminder for 5 turns from now to "Whip London", every player would see that alert as they began their 5th turn later? That's very strange as I thought that script data was not passed between machines.

That was true as of BUG 3.5.1, we haven't tried it with later versions. And I suppose I can't vouch for every since it was a two player game, but I suddenly saw a message telling me to harass Brennus's shipping at one point, which turned out to have been a reminder the other player had left for himself at the end of a session so he'd remember what he was doing.

We only tried it the once, though.

Okay, I thought you were talking about reminders--not alerts. Well that's fine because there was a problem with Reminders as well. ;) I suspect this is the same thing I am seeing sometimes with the first reminder popup showing up while that little window is displayed. If I can fix one of them, I'll end up fixing both.

Edit: Do these alerts always show up with that little window open, or is it random?

It appears to happen every time. If that pattern ever breaks I'll post.
 
During a regular INTERNET or LAN multiplayer game, if player 1 set a reminder for 5 turns from now to "Whip London", every player would see that alert as they began their 5th turn later? That's very strange as I thought that script data was not passed between machines.
Is that because they are displayed as a pop up box? If they are only displayed as immediate messages, then (IIRC) that function contains an input which limits which player receives it.
 
I believe I have fixed some of these hotseat issues in the latest SVN:

  • Strategy Layer (dotmap) is hidden while switching players
  • Civ4lerts and Reminders no longer show up while switching players
  • Civ4lerts now fire for all human players
  • Reminders that fired this turn no longer show in End Turn Text for next player
This won't fix the issue of a single Reminder showing up for multiple players or for the wrong player. For that I'll have to make Reminders multiplayer-aware. For the above scenario, was it a hotseat game or a network game?
 
Is that because they are displayed as a pop up box? If they are only displayed as immediate messages, then (IIRC) that function contains an input which limits which player receives it.

I would think popups would be limited to the active player as well, otherwise everyone would get a chance to choose your next tech to research or name your newly founded cities.

The main problem with Reminders Mod is that it is not multiplayer-aware. It stores all reminders in a single queue. If you are playing a network game, each player has their own queue on their machine, so it should work until you try to load a game.

When you load a network game, you load it on one machine and it's transferred to all the other players. My understanding is that Script Data (where reminders are stored) changes are not broadcast to the other players during a game. Thus only the reminders of the person that saved the game would remain, and they would be sent out to all other players when that game was loaded.

@MadmanAtW - If you friend had saved the game and reloaded it later, you would get his reminders once you joined in. You wouldn't see any new reminders he set or vice versa while playing that session. The same thing would happen (only one queue saved) when one of you saved the game.

Once I make Reminders multiplayer-aware, you won't get the problem of reminders leaking to the wrong player. However, if I'm correct about Script Data, only one player's reminders will be saved for a later session.

This is currently how the dotmap operates. It's clearly suboptimal, but at least it doesn't leak secret information like Reminders does. The dotmap is more easily fixable since its add/remove operations are easily encoded into a single network message. Reminders won't be so easy.
 
Back
Top Bottom