Announcement

Collapse
No announcement yet.

PROJECT: Playtest (the 4th Thread)

Collapse
This topic is closed.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #46
    So far after playing 300 turns only had one slow down problem which lasted for a short time. Using build 553 no Civ3 mod yet but will try it next game.
    On very hard in 3rd with 7 other Civs-game at first was peacefull as I had two peace treaties with nations on my border. France(32 cities),Egypt(35cities) and China(28cities) are in the lead.
    France has been beating up a nation on my border, the Dutch taken city after city(down to 6) so I will be seeing more action soon. Will miss are technolgy trading.
    AI to AI wars for the most part are short but against humans it can be another case. However France is staying at war as it takes out the Dutch,almost humun like in a way as it is driving for the kill.
    I bring this up because I know that your looking at the frenzy mod which at times did work in other mods.
    But will the updates to AI to AI diplomacy will it work against the AI as it might cause it to fight too many wars and weaken its defense.
    Im looking at the Fascist unit.As you know when you switch out of Fascism all these units are deleted.
    France has 45 units made and would take a big loss of power all at once. They have around 200 units in all.
    Im thing of making Mass Media the obsoleteAdvance so most AI factions would switch to the Machine Gunner unit to replace fascist unit.
    Mass media was used to expose the truly criminal nature of Fascism and its role in destabilizing of international relations.

    Comment


    • #47
      Protra thanks!
      There will be a 557 soon and it looks just as stable (the crash I posted earlier loks linked to the SLIC issues I was having). So far in playtesting my civ3mod I noticed that since the 'new' medium is the old hard things changed a lot.

      I built my first unit, a scout, ready to explore and came across THREE french cities. Yikes. THey put that gold and shields to good use and I checked stats and I was 11 out of 12. Fortunately I started with elephants next to my city and hurried to polytheism to get Elephant Warriors. I was three cities by this time to the French 4+ and they had me boxed in. My elephants turned the tide which made me concerned.

      I checked the cheat the FRench had a huge navy and were deploying catapults all over the world. I faced many warrior-catapults in cities. I think I over weakened the catapult so i ncreased there power. But then I check personalities and saw that they were all identical and a heavy emphasis on exploration and expansion, NOT attack. I boosted attack and strted to get a response from the French. A mild one but it was only a few turns after the personality tweak.

      So I have since updated all the personalities and they will be included in 557 so you ought to see a different game play out of the AI if the coding behind the new personalities is right.

      As for CIv3mod. I have yet to package the final release. I redid all the icons and I'm doing my initial playtesting now.
      Formerly known as "E" on Apolyton

      See me at Civfanatics.com

      Comment


      • #48
        Ok,

        557 is now up

        Civ3mod is up and ready

        and I have new tiles, its a smaller zip because it has the only needed 565 file (I'm running out of space), and I added some new imps for Civ3

        and for those wondering, Civ3mod is Civ3ish. It has the graphics and some features but the stuff I added has really made it a combo of ctp2 and civ3 with some new features.
        Formerly known as "E" on Apolyton

        See me at Civfanatics.com

        Comment


        • #49
          I think bureaubert's crash
          0x0047ffa3 [?FindLevel@Advances@@QBEJQBVAdvanceRecord@@J@Z + 0xb4]
          0x00480049 [?Serialize@Advances@@QAEXAAVCivArchive@@@Z + 0x3c]
          has somethimg with this function is it the loop?

          Code:
          //----------------------------------------------------------------------------
          //
          // Name       : Advances::FindLevel
          //
          // Description: Find level (length of prerequisite chain) of an advance.
          //
          // Parameters : rec				: advance description in database
          //				fromLevel		: length of chain reaching this advance
          //
          // Globals    : g_theAdvanceDB	: advance database
          //
          // Returns    : sint32			: length of largest chain of prerequisites
          //
          // Remark(s)  : throws an overflow_error when a loop is detected in the chain.
          //
          //----------------------------------------------------------------------------
          sint32 Advances::FindLevel
          (
          	AdvanceRecord const * const	rec, 
          	sint32 const				fromLevel
          ) const
          {
          	if (fromLevel > g_theAdvanceDB->NumRecords())
          	{
          		throw std::overflow_error(REPORT_ADVANCE_LOOP);
          	}
          
          	sint32	maxLevel = fromLevel;
          
          	for (sint32 prereq = 0; prereq < rec->GetNumPrerequisites(); prereq++) 
          	{			
          		AdvanceRecord const * prereqRecord = 
          			g_theAdvanceDB->Access(rec->GetPrerequisitesIndex(prereq));
          
                  if (rec == prereqRecord)
                  {
                      throw std::overflow_error(REPORT_ADVANCE_SELF);
                  }
                  		
          		sint32 const level	= FindLevel(prereqRecord, 1 + fromLevel);
          		if (level > maxLevel)
          			maxLevel = level;
          	}
          
          	return maxLevel;
          }
          Formerly known as "E" on Apolyton

          See me at Civfanatics.com

          Comment


          • #50
            Actually now I think its a bug in the code Fromafar or MArtin could you help? it happens when the Cubans who are pretty adavnced pop a gody hut. I think its because they are too adavnced and this is the coe that the crash mentions (for units and advances)

            Code:
            goodyhut.cpp
            
              if (advances->GetMinPrerequisites
                                    (rec->GetEnableAdvanceIndex(), maxNovelty) 
                                <= maxNovelty
                               )
                            {
            				   possible[nextPossible++] = i;
            			    }
            Formerly known as "E" on Apolyton

            See me at Civfanatics.com

            Comment


            • #51
              Just some notes on my Civ3mod playtestin. Bureaubert is helping as well. I think his problem is relsated to the smaller Civ3 tech tree and that he used a massive map and the code bugged on tryingto give an advance to such an advanced player. Will try to fix it.


              As for my game I had a peaceful game going and decided to spice it up by fighting some romans. surprisingly the sent a knight and captured one of my cities on my home island. i took it back easy but my attempts to invade them have been crushed at the beach.

              I lucked out against the mayans and took a large city with no defenders, don't know if it was luck, but the AI should have done that (i did see something leave before I invaded it)

              overall its a good game.

              I've had to make some adjustments and fix some of my good code (I traded horses but could stil build horse units, not supposed to happen).

              The gold stuff I add for units and cities hits the player, not the AI, and it forced me to lower my science rate and change to more peaceful govts, keepingme behind (as I put in the code negative gold only hurts the player not AI). butthen there is a point when i make so much gold its not an issue so ihave add another multiplier but will see how it does.

              I alsohad to lower the catapult strength, now they are TOO strong. so a new revision should be soon and some fixing to my civ3mod.
              Formerly known as "E" on Apolyton

              See me at Civfanatics.com

              Comment


              • #52
                Bureaubert's crash http://www.apolyton.net/forums/showt...93#post4346793

                Code:
                  0x0047ffa3  [?GetMinPrerequisites@Advances@@QBEJJJ@Z + 0x6]
                  0x00480049  [?GetMinPrerequisites@Advances@@QBEJJJ@Z + 0xac]
                  0x004ce35a  [?ChooseType@GoodyHut@@AAE?AW4GOODY@@ABJ@Z + 0x177]
                  0x004ce5f8  [?OpenGoody@GoodyHut@@QAEXABJABVMapPoint@@@Z + 0x33]
                  0x00492eb2  [?CheckTerrainEvents@ArmyData@@QAEXXZ + 0x60]
                Code:
                //----------------------------------------------------------------------------
                //
                // Name       : Advances::GetMinPrerequisites
                //
                // Description: Get the number of missing steps to get to an advance
                //
                // Parameters : adv     : the advance to get to
                //              limit   : when to stop counting and report it as too advanced
                //
                // Globals    : g_theAdvanceDB
                //
                // Returns    : sint32  : the number of missing prerequisite steps
                //
                // Remark(s)  : - When you already have the advance, the returned value is 0.
                //              - When you have all prerequisites for the advance, but do not
                //                have the advance itself, the returned value is 1.
                //              - When you are missing prerequisites for the advance, the 
                //                returned value is the sum of the recursive application of 
                //                this function to the missing prerequisites.
                //              - When the limit is reached, the returned value is unspecified,
                //                but always larger than the limit.
                //
                //----------------------------------------------------------------------------
                sint32 Advances::GetMinPrerequisites(sint32 adv, sint32 limit) const
                {
                	if (m_hasAdvance[adv])
                    {
                		return 0;
                    }
                
                	AdvanceRecord const *   rec         = g_theAdvanceDB->Get(adv);
                	sint32                  totalneeded = 0;
                
                	for (sint32 prereq = 0; prereq < rec->GetNumPrerequisites(); ++prereq)
                    {
                		if ((rec->GetIndex() != rec->GetPrerequisitesIndex(prereq)) &&
                            !m_hasAdvance[rec->GetPrerequisitesIndex(prereq)]
                           ) 
                        {
                			totalneeded += 
                                GetMinPrerequisites(rec->GetPrerequisitesIndex(prereq), limit - 1);
                
                            if (totalneeded > limit)
                            {
                                return totalneeded;
                            }
                		}
                	}
                
                	return totalneeded + 1; 
                }
                Code:
                    case GOODY_ADVANCE:
                        {
                            Advances const *    advances     = g_player[owner]->m_advances;
                		    AdvanceType *       possible     = 
                                new AdvanceType[g_theAdvanceDB->NumRecords()];
                		    size_t              nextPossible = 0;
                            sint32 const        maxNovelty   = risk.GetMaxAdvanceLeap();
                
                		    for (AdvanceType i = 0; i < g_theAdvanceDB->NumRecords(); ++i) 
                            {
                                if (advances->HasAdvance(i)) 
                					continue;   // known
                
                				if (g_theAdvanceDB->Get(i)->GetGoodyHutExcluded())
                				    continue;   // EMOD new flag to prevent some unts from appearing
                
                				if ((g_theAdvanceDB->Get(i)->GetNumPrerequisites() > 0) &&
                			        (g_theAdvanceDB->Get(i)->GetPrerequisitesIndex(0) == i)
                                   )
                                    continue;   // undiscoverable
                
                                if (advances->GetMinPrerequisites(i, maxNovelty) <= maxNovelty)
                                {
                                    possible[nextPossible++] = i;			    
                                // else: too advanced
                		    }
                
                		    if (nextPossible) 
                            {
                		        m_value = possible[(nextPossible * m_value) / k_VALUE_RANGE];
                		    }
                            else
                            {
                                result  = GOODY_BOGUS;
                            }
                
                		    delete [] possible;
                	    }
                        break;
                how do i get it so that there is no crash when you get too advanced? I think this is a problem on large maps a lotof advances become available.

                I see its linked to risks.txt so I'm going to look there as well. The other issue is that Ctp2 seems to have technologies that have 2 min prereqs and I have one. I have changed my advances.txt to have two minprereqs but stil it crashes
                Last edited by Ekmek; March 29, 2006, 13:19.
                Formerly known as "E" on Apolyton

                See me at Civfanatics.com

                Comment


                • #53
                  Originally posted by E
                  Bureaubert's crash http://www.apolyton.net/forums/showt...93#post4346793

                  Code:
                    0x0047ffa3  [?GetMinPrerequisites@Advances@@QBEJJJ@Z + 0x6]
                    0x00480049  [?GetMinPrerequisites@Advances@@QBEJJJ@Z + 0xac]
                    0x004ce35a  [?ChooseType@GoodyHut@@AAE?AW4GOODY@@ABJ@Z + 0x177]
                    0x004ce5f8  [?OpenGoody@GoodyHut@@QAEXABJABVMapPoint@@@Z + 0x33]
                    0x00492eb2  [?CheckTerrainEvents@ArmyData@@QAEXXZ + 0x60]
                  What says the log files of the debug version, E?

                  However you would achieve much more if you use the debugger, that can give you the exact line where the game crashes.

                  -Martin
                  Civ2 military advisor: "No complaints, Sir!"

                  Comment


                  • #54
                    Martin,

                    I compiled a CTpdebug version and the game wont load with a debug because of an assert failure

                    Code:
                    void World::GetContinent(const MapPoint &pos, sint32 &cont_number, BOOL &is_land) const
                    {
                    	BOOL GET_CONTINENT_RETURNED_INCONTINENT_VALUE = FALSE;
                    	is_land = !IsWater(pos); 
                    	
                    	
                    	cont_number = GetCell(pos)->m_continent_number;
                    	if (is_land) { 
                    		cont_number -= LAND_CONTINENT_START; 
                    	} 
                    
                    	if (cont_number < 0)
                    	{
                    		
                    		[b]Assert(GET_CONTINENT_RETURNED_INCONTINENT_VALUE);
                            is_land = FALSE; [/b]
                            cont_number = 0; 
                    	}
                    
                    	if (!is_land && cont_number >= LAND_CONTINENT_START)
                    	{
                    		
                    		Assert(GET_CONTINENT_RETURNED_INCONTINENT_VALUE);
                            is_land = FALSE; 
                            cont_number = 0; 
                    	}
                    }
                    saying the problem is the line in bold

                    EDIT: (the spacing messed up when i pasted from msvc)
                    Formerly known as "E" on Apolyton

                    See me at Civfanatics.com

                    Comment


                    • #55
                      Well the GetContinent error I CANT figure it out but it appears to be a problem with some files I edited for my Civ3mod. Anyone know how this functioned is called and where I might have changed it?

                      A normal ctp2 compiles and runs fine, but the debug version gets this crash



                      As for the advances. I think I know whats doing it. Its because my advances tree allows the AI to cruise up to one path bypassing some techs but then has to go back and get the others. And from the looks of the code it looks at your highest number tech, the latest and tries to give the next one. But in my case the next advance requires a tech done a different route.

                      I think this is a DEFECT. can anyone confirm. if anything I think if it does the goody hut check and it cant get the next highest then it should give you whatever you are researching at the time (which the AI was back on an ancient tech).

                      Am I tinking right on this?
                      Formerly known as "E" on Apolyton

                      See me at Civfanatics.com

                      Comment


                      • #56
                        As an amateur I have to ask two stupid questions related to this advances bug (code below):

                        1) In the bold how can a finction call the same finction in its code (in this case the GetMinPrerequisites function calls GetMinPrerequisites) ?

                        2) how is GetMinPrerequisites a sint32? it has two values the advance and the limit. Does it add or multiply them together? the goody hut code posted previously looks like it just needs one value to find the next advance so how does it get one advance from a sint32 that has two values with it?

                        Code:
                        sint32 Advances::GetMinPrerequisites(sint32 adv, sint32 limit) const
                        {
                        	if (m_hasAdvance[adv])
                            {
                        		return 0;
                            }
                        
                        	AdvanceRecord const *   rec         = g_theAdvanceDB->Get(adv);
                        	sint32                  totalneeded = 0;
                        
                        	for (sint32 prereq = 0; prereq < rec->GetNumPrerequisites(); ++prereq)
                            {
                        		if ((rec->GetIndex() != rec->GetPrerequisitesIndex(prereq)) &&
                                    !m_hasAdvance[rec->GetPrerequisitesIndex(prereq)]
                                   ) 
                                {
                        		[b]	totalneeded += 
                                        GetMinPrerequisites(rec->GetPrerequisitesIndex(prereq), limit - 1); [/b]
                        
                                    if (totalneeded > limit) // is this causing the bureaubert crash?
                                    {
                                        return totalneeded; // return m_researching; ?
                                    }
                        		}
                        	}
                        
                        	return totalneeded + 1; 
                        }
                        
                        sint32 Advances::GetMinPrerequisites(sint32 adv) const
                        {
                            return GetMinPrerequisites(adv, m_size * k_MAX_Prerequisites);
                        }
                        Formerly known as "E" on Apolyton

                        See me at Civfanatics.com

                        Comment


                        • #57
                          This isn't really appropriate for the playtest thread, but anyway...

                          Originally posted by E
                          As an amateur I have to ask two stupid questions related to this advances bug (code below):

                          1) In the bold how can a finction call the same finction in its code (in this case the GetMinPrerequisites function calls GetMinPrerequisites) ?
                          It calls itself in just the same way it calls any other function (Actually the situation is somewhat more complex than this, but you don't want to know the details). This is called recursion, and it's very useful at times. I'm not sure it's really the best thing to do here, but I also don't think it's what is causing the crash. Not directly, anyway (If it was, I would have expected more copies of GetMinPrerequisites on the call stack).

                          2) how is GetMinPrerequisites a sint32? it has two values the advance and the limit. Does it add or multiply them together? the goody hut code posted previously looks like it just needs one value to find the next advance so how does it get one advance from a sint32 that has two values with it?
                          The comment above the function explains what its return value means. The goody hut code compares this value with another integer using <=. This is a perfectly normal thing to do.

                          Comment


                          • #58
                            Originally posted by E
                            Well the GetContinent error I CANT figure it out but it appears to be a problem with some files I edited for my Civ3mod. Anyone know how this functioned is called and where I might have changed it?
                            Probably it is a problem caused by your files or we can now see because of your modified files. So did you try to load a game with the default files?

                            Originally posted by E
                            A normal ctp2 compiles and runs fine, but the debug version gets this crash
                            Did you press the ignore button on the assert popup window? The button that allows you to continue - and not one of the other buttons.

                            Anyway if it still crashes you can can look into the log files in the log subfolder of the ctp folder and post the assertion falure stacks printed there.

                            And by the way as John already pointed out, this thread isn't the appropiate place for this. Therefore for next time please open a seperate thread or use any other appropiate thread. You know all these code stuff might not be so interesting for the avarage playtester.

                            -Martin
                            Civ2 military advisor: "No complaints, Sir!"

                            Comment


                            • #59
                              Originally posted by Martin Gühmann


                              Probably it is a problem caused by your files or we can now see because of your modified files. So did you try to load a game with the default files?
                              Oh its definetely my modified files because I put them in my code/playtest folder (its a little screwed up but basic game) and it worked there (surprisingly). So i know its a modified file but I don't know where get continent would be messed with and how because i don't see any ties of it to db text stuff. Well except probably terrain.txt but all i did was change resource values and goods.


                              Did you press the ignore button on the assert popup window? The button that allows you to continue - and not one of the other buttons.

                              Anyway if it still crashes you can can look into the log files in the log subfolder of the ctp folder and post the assertion falure stacks printed there.

                              And by the way as John already pointed out, this thread isn't the appropiate place for this. Therefore for next time please open a seperate thread or use any other appropiate thread. You know all these code stuff might not be so interesting for the avarage playtester.

                              -Martin

                              Ok, I'll dig up the log files, i think i did look there and nothing but the same popup of an assert failure and the line is IIRC.

                              I did try the Ignore and it still crashed.


                              I'll open threads for the 'get Continent' and MinPreq crashes (in a bit)
                              Formerly known as "E" on Apolyton

                              See me at Civfanatics.com

                              Comment


                              • #60
                                Missing Stuff In Build 557

                                To clean up my mess I did a fresh install of CTP2 and CTP2 AE:

                                - Installed CTP2
                                - Installed Patch 1.11
                                - Copied the original folder
                                - Copied the 557 build files into this new ("AE") folder
                                - Started ctp2.exe from the AE folder

                                This did not work out - I got lots of error messages concerning missing stuff. Installing playtest version 2005-10-23 in the first place, and then build 557 resolved the problem (at least I got as far as to start the game without error messages - I didn't start a game with this fresh install so far).

                                Just to let playtesters know ...

                                P.S.: The main purpose of cleaning up my mess is that I want to try to rebuild my totally fantastic unplayable MoT-Mod from ground up - and as a Scenario , as it should be.
                                I think Scenario structure issues have been fixed? Could a savvy member of the most estimated Source Code Team confirm this? Pleeease, thanks a lot in advance!
                                Last edited by BureauBert; April 10, 2006, 12:50.
                                The modding knowledgebase: CTP2 Bureau (with CTP2 AE Modding Wiki). Modern Times Mod (work in progress): MoT-Mod for CTP2.

                                Comment

                                Working...
                                X