Announcement

Collapse
No announcement yet.

PROJECT: Playtest (the 4th Thread)

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

  • Obviously I forgot to include some *.dll's that were added since last October. Anyway in the attachment you find find. Just unzip it into your ...\ctp2_program\ctp\ folder. And it should work. Of course if I have forgotten some more stuff just ask.

    Well I am going to upload a corrected file later this week.

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

    Comment


    • That's solved the problem and the game loads fine now. Thanks!

      Comment


      • Thanks Martin

        Started the new playtest with the small fix.Works fine.
        Only other files added on were E tiles with Diplomod pictures.I did not add E,s build this time around as I wanted to see how the AI was in the new playtest alone.
        Celtics this time out.With 8 Civs -very hard -largest map-up to 154 turns.
        So far in 5th place over all but military in first place.AI,s love to build wonders as many races were going on.Even so I did manage to build one The Great Wall.
        Met the Malians who trade maps with me.
        I was looking at the read me for this version and there was something about free unit upgades for the AI.Didnt know that this was a option now. How do you upgrade a unit?

        Comment


        • Originally posted by Protra3211
          So far in 5th place over all but military in first place.AI,s love to build wonders as many races were going on.Even so I did manage to build one The Great Wall.
          Actually this is nothing new, but the stuff is reported again. And of course the AI should compete for wonders. Since these wonders have powerfull benefits, each AI should have one.

          Originally posted by Protra3211
          I was looking at the read me for this version and there was something about free unit upgades for the AI.Didnt know that this was a option now. How do you upgrade a unit?
          With the default text files not at all but you can use the unit.txt from E's built. However the upgrade function is a little bit hidden since E was too lazy to add an upgrade order.

          Upgrade can be done inside a city by putting the units to sleep. Well not a very elegant way to do it, since you may just put your units to sleep without upgrading them.

          By the way how good is the readibility of the reversed readme in comparision to the last version?

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

          Comment


          • Originally posted by Martin Gühmann
            With the default text files not at all but you can use the unit.txt from E's built. However the upgrade function is a little bit hidden since E was too lazy to add an upgrade order.

            Upgrade can be done inside a city by putting the units to sleep. Well not a very elegant way to do it, since you may just put your units to sleep without upgrading them.

            aw, your too kind. Actually stupid might apply more than lazy. From what I looked into for creating a new order:

            1) add it to order cdb but something said its limited to 32 bits

            2) adding the order handling in armydata.cpp not sure I understand that (especially after my rebasing attempts)

            3) interface changes. the interface wouldlook odd with a new button. We discussed a "next" button. but that might be too cumbersome. And i havent got a handle on modifying interface yet. it takes my awhile tolearn all the intricacies like I did for cities and units.


            But I kept the format the same for the upgrader which was sleep. except the AI can upgrade until it runs out of gold or with free upgrades they will all upgrade provided the unit is in a city (and that I marked the upgrades correctly, if not it will crash)
            Formerly known as "E" on Apolyton

            See me at Civfanatics.com

            Comment


            • Originally posted by E
              aw, your too kind. Actually stupid might apply more than lazy. From what I looked into for creating a new order:
              No, too lazy to figure this out.

              Originally posted by E
              1) add it to order cdb but something said its limited to 32 bits
              Well you could count all those bits that are following this cemment. And then you can assume that this guy fixed it afterwards he had added the comment and forgot it to remove.

              Originally posted by E
              2) adding the order handling in armydata.cpp not sure I understand that (especially after my rebasing attempts)
              That's just a button and can be put on the button bank where you want it. Alternatively we could make it so that it overwrites one of the other buttons.

              Originally posted by E
              3) interface changes. the interface wouldlook odd with a new button. We discussed a "next" button. but that might be too cumbersome. And i havent got a handle on modifying interface yet. it takes my awhile tolearn all the intricacies like I did for cities and units.
              No need for this in this case.

              Originally posted by E
              But I kept the format the same for the upgrader which was sleep. except the AI can upgrade until it runs out of gold or with free upgrades they will all upgrade provided the unit is in a city (and that I marked the upgrades correctly, if not it will crash)
              This is called hiding information, noone expects behind the sleep command an upgrader, if you don't tell him it in game.

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

              Comment


              • Thanks for the reply.

                I had finished up a 619 build game so have to check into E,s 630 for what has been added in. With E,s build I never was in 1st place with my military early in the game in part because of production numbers in DiffDB.
                I know that much more than that was put into E,s build as features found in Civ3 were added in.
                Its just the last 20% of the game .Where the humand player starts to peak and reaches 1st place.How can the AI compete after it drops out of first place?
                Maybe adding Peter Triggs merge Civs slc file might even up the odds. Might be worth testing out in a build.
                Its in the Conquest mod. Have a 4 day weekend so should finish up the game .

                Comment


                • Hello,

                  I've noticed a few bugs concerning 632:

                  1- Diplomacy, Giving an advance doesn't makes the Civilization that's supposed to get it actually learns it.

                  2- Engaging fight on an unit, provoking an act of war, throws an "Out Of Bounds" SLIC error

                  3- Fog-of-war terrain shows extra resources (this was reported before by another person)

                  4- Infraestructure takes an extra turn to get Public Works

                  5- The Almighty Endless Turn Of Pain -- This has been bugging me since first I tried CTP2, the game picks a random civilization, and takes about 10x times the actual time other civilizations do to complete their turn...

                  and some feature requests (I hope this doesnt breaks Tamerlin's Rule )

                  1- Isn't supposed Alllied civilizations provide full vision of their own civilization? I think this was on the manual... (PS: You can build Roads improvements, but not farms or other kinds, thats why the AllyCanBuild )

                  2- The extended advance choice window

                  3- I forgot this one, sorry, im pretty far away from home once I get back ill report it

                  well, gotta rush back at home, before the bus leaves me behind again

                  Comment


                  • Originally posted by Protra3211
                    have to check into E,s 630 for what has been added in. With E,s build I never was in 1st place with my military early in the game in part because of production numbers in DiffDB.
                    The only difference with 630 and Martin's 632 are the language text files and the diffreent unit.txt, diffdb, etc. I'm thinking that I should just add those files as a a new scenario folder apolpack2 or something. There is a AE mod folder in scenarios now so you can add those changed files to that (unit.txt is already there with upgrading though) and play my stuff from there.

                    I know that much more than that was put into E,s build as features found in Civ3 were added in.
                    632 to has them as well but not available in the standard ctp2 game the altered game files I added just have stuff like upgrading units since I thought that tamerlin agreed with that, although Martin doesn't think it should part of the standard game files (even though we added the apolpack stuff).

                    Its just the last 20% of the game .Where the humand player starts to peak and reaches 1st place.How can the AI compete after it drops out of first place?
                    Maybe adding Peter Triggs merge Civs slc file might even up the odds. Might be worth testing out in a build.
                    Its in the Conquest mod. Have a 4 day weekend so should finish up the game .
                    Protra, thats a good point. It appears even the diffdb's 'behind' bonuses dont help. I guess we could increase those more as well. Maybe increasing wonder effects since the AI does those pretty well (like adding production and happines bonuses on top to what they already have)
                    In my civ3mod I tried to add some unique units for behind ai's like guerrillas and the freeAI upgrades helped too. But i'm open to other ideas that would make a modern age a new challenge, truly like a new era you have to deal with, but that may have to go into a mod.



                    Originally posted by LemurMadness
                    1- Diplomacy, Giving an advance doesn't makes the Civilization that's supposed to get it actually learns it.
                    Hmm, I didn't see that in my last civ3mod. Not that I dont trust you but can anyone else confirm it.


                    2- Engaging fight on an unit, provoking an act of war, throws an "Out Of Bounds" SLIC error
                    I think Debugslic = No is userprofile still stops this. Still not sure why we have to do that still.

                    3- Fog-of-war terrain shows extra resources (this was reported before by another person)

                    4- Infraestructure takes an extra turn to get Public Works
                    I havent seen it yet but sadly its been awhile since I could fire up ctp2, I still owe pave a response.

                    5- The Almighty Endless Turn Of Pain -- This has been bugging me since first I tried CTP2, the game picks a random civilization, and takes about 10x times the actual time other civilizations do to complete their turn...
                    how long is this turn I notice it in the first turn but not much later (well the last time I played)

                    and some feature requests (I hope this doesnt breaks Tamerlin's Rule )

                    1- Isn't supposed Alllied civilizations provide full vision of their own civilization? I think this was on the manual... (PS: You can build Roads improvements, but not farms or other kinds, thats why the AllyCanBuild )
                    full vision i didn't see in the code but awhile since I went there. And thanks for pointing out the CanBuildAlly I forgot to defend my rational

                    2- The extended advance choice window
                    Well this is the code (I think). I don't see any hard limit on what you can research and it doesnt look random.


                    Code:
                    //----------------------------------------------------------------------------
                    //
                    // Name       : sci_advancescreen_loadList
                    //
                    // Description: Generate the list of advances that may be researched next.
                    //
                    // Parameters : -
                    //
                    // Globals    : g_player			: list of players
                    //				g_selected_item		: determines currently active player
                    //				g_theAdvanceDB		: advance database
                    //				g_theStringDB		: language dependent text to display
                    //				s_scienceGoalTree	: list of advances that lead to the goal
                    //
                    // Returns    : s_advanceList		: filled with the generated list
                    //				s_goaltext			: set from current research goal
                    //				s_sci_advanceScreen	: redrawn
                    //				s_scienceGoalTree	: created (empty) when not existing yet
                    //
                    // Remark(s)  : -
                    //
                    //----------------------------------------------------------------------------
                    sint32 sci_advancescreen_loadList( void ) 
                    {
                    
                    	
                    	Player *p = g_player[g_selected_item->GetVisiblePlayer()];
                    	MBCHAR str[_MAX_PATH];
                    	if(!s_scienceGoalTree)
                    	{
                    		s_scienceGoalTree = new bool[g_theAdvanceDB->NumRecords()];
                    	}
                    	memset(s_scienceGoalTree,0,sizeof(bool)*g_theAdvanceDB->NumRecords());
                    	if(p->m_researchGoal >= 0)
                    	{
                    		sci_advancescreen_fillgoalarray(p->m_researchGoal);
                    		sprintf(str,"%s %s",g_theStringDB->GetNameStr("str_ldl_ResearchGoal"),
                    			g_theAdvanceDB->Get(p->m_researchGoal)->GetNameText());
                    	}
                    	else
                    	{
                    		sprintf(str,"%s",g_theStringDB->GetNameStr("str_ldl_ResearchGoal"));
                    	}
                    	s_goaltext->SetText(str);
                    
                    	
                    	if (!s_advanceList) return 0;
                    
                    	
                    	ctp2_ListItem *item = NULL;
                    	ctp2_Static *child = NULL;
                    	
                    	s_advanceList->Clear();
                    
                    	
                    
                    	
                    	uint8 *			advances		= p->m_advances->CanResearch();
                    	sint32 const	advanceCount	= g_theAdvanceDB->NumRecords();
                    	sint32			curItemIndex	= 0;
                    
                    	for (sint32 i = 0; i < advanceCount; ++i)
                    	{
                    
                    		if( advances[i] ) {
                    			if(s_scienceGoalTree[i])
                    			{
                    				sprintf( str, "%s*", g_theStringDB->GetNameStr(g_theAdvanceDB->Get(i)->m_name) );
                    			}
                    			else
                    			{
                    				sprintf( str, "%s", g_theStringDB->GetNameStr(g_theAdvanceDB->Get(i)->m_name) );
                    			}
                    			
                    			item = (ctp2_ListItem *)aui_Ldl::BuildHierarchyFromRoot("SciListItem");
                    			child = (ctp2_Static *)item->GetChildByIndex(0);
                    			if(child) 
                    			{
                    				child->SetText(str);
                    			}
                    			item->SetUserData((void*)i);
                    			item->SetCompareCallback(ScienceSortCallback);
                    
                    			s_advanceList->AddItem( item );
                    			curItemIndex++;
                    		}
                    	}
                    
                    	
                    	delete advances;
                    
                    	s_advanceList->SortByColumn(0,TRUE);
                    
                    	// Find the current research in the sorted list.
                    	// If not found, index 0 (the cheapest) will be selected.
                    	sint32 const	research	= p->m_advances->GetResearching();
                    	bool			isIndexOk	= false;
                    
                    	for (sint32 index = curItemIndex - 1; (index >= 0) && !isIndexOk; --index)
                    	{
                    		s_advanceList->SelectItem(index);
                    		ctp2_ListItem *	item = 
                    			reinterpret_cast(s_advanceList->GetSelectedItem());
                    		isIndexOk = (research == reinterpret_cast(item->GetUserData()));
                    	}
                    
                    	s_sci_advanceScreen->ShouldDraw(TRUE);
                    
                    	return 0;
                    }
                    Last edited by Ekmek; August 29, 2006, 19:25.
                    Formerly known as "E" on Apolyton

                    See me at Civfanatics.com

                    Comment


                    • Originally posted by LemurMadness

                      and some feature requests (I hope this doesnt breaks Tamerlin's Rule )

                      1- Isn't supposed Alllied civilizations provide full vision of their own civilization? I think this was on the manual... (PS: You can build Roads improvements, but not farms or other kinds, thats why the AllyCanBuild )

                      2- The extended advance choice window

                      3- I forgot this one, sorry, im pretty far away from home once I get back ill report it

                      well, gotta rush back at home, before the bus leaves me behind again
                      I don't see any problem with these requests.

                      Requests accepted !
                      "Democracy is the worst form of government there is, except for all the others that have been tried." Sir Winston Churchill

                      Comment


                      • Originally posted by Tamerlin


                        I don't see any problem with these requests.

                        Requests accepted !
                        You support unit upgrading too right?
                        Formerly known as "E" on Apolyton

                        See me at Civfanatics.com

                        Comment


                        • Originally posted by E


                          You support unit upgrading too right?
                          Absolutely, replacing units is otherwise a painful process and represents too much micro management which deters the player from the real pleasure : building an empire.

                          We, empire builders, have far more important things to do than giving petty orders such as building a new unit in order to replace a given archer somewhere on the map. Needless to say that moving the newly produced units on the map and then disbanding the older unit when the first one is reaching its destination is a waste of time.

                          So yes, I agree with unit upgrading.
                          "Democracy is the worst form of government there is, except for all the others that have been tried." Sir Winston Churchill

                          Comment


                          • Originally posted by LemurMadness
                            2- The extended advance choice window
                            I think that the number of advances you usually get to choose from is specified in const.txt (though there are variations both up and down for reasons I won't go into right now).

                            Comment


                            • ahhh

                              would that be the lines:

                              Code:
                              ADVANCE_CHOICES_MIN 4
                              ADVANCE_CHOICES_MAX 6
                              and this would be the corresponding code in adavnces.cpp

                              Code:
                              void Advances::ResetCanResearch(sint32 justGot)
                              [i]...some code...[/i]
                              
                              	if(num > g_theConstDB->AdvanceChoicesMin()) {
                              		sint32 howMany = g_rand->Next(g_theConstDB->AdvanceChoicesMax() - 
                              									  g_theConstDB->AdvanceChoicesMin()) +
                              			g_theConstDB->AdvanceChoicesMin();
                              		while(num > howMany) {
                              			sint32 origNum = num;
                              			sint32 which = g_rand->Next(num);
                              			sint32 found = 0;
                              			for(i = 0; i < m_size; i++) {
                              				if(m_canResearch[i]) {
                              					if(found == which) {
                              						m_canResearch[i] = FALSE;
                              						num--;
                              						break;
                              					}
                              					found++;
                              				}
                              			}
                              			Assert(num != origNum);
                              			if(num == origNum)
                              				break;
                              		}
                              	}
                              
                              	
                              
                              	
                              	if(m_theLastAdvanceEnabledThisManyAdvances <= 4) {
                              		for(i = 0; i < m_size; i++) {
                              			if(!m_hasAdvance[i] && !m_canResearch[i]) {
                              
                              				
                              				if(g_theAdvanceDB->RequiresProbeRecovery(i) &&
                              				   !g_player[m_owner]->m_hasRecoveredProbe) {
                              					continue;
                              				}
                              
                              				const AdvanceRecord *rec = g_theAdvanceDB->Get(i);
                              				BOOL justEnabled = FALSE;
                              				BOOL canResearch = TRUE;
                              				for(sint32 prereq = 0; prereq < rec->m_nPrereq; prereq++) {
                              					if(!m_hasAdvance[rec->m_prereq[prereq]]) {
                              						canResearch = FALSE;
                              						break;
                              					}
                              					if(rec->m_prereq[prereq] == justGot) {
                              						justEnabled = TRUE;
                              					}
                              				}
                              and some other stuff. I guess LemurMadness you are on to experiment with it
                              Formerly known as "E" on Apolyton

                              See me at Civfanatics.com

                              Comment


                              • I note a probable error in the code E has just posted:

                                Originally posted by E
                                Code:
                                void Advances::ResetCanResearch(sint32 justGot)
                                [i]...some code...[/i]
                                	if(m_theLastAdvanceEnabledThisManyAdvances <= 4)
                                I strongly suspect that that "4" should in fact be some database value. Most probably g_theConstDB->AdvanceChoicesMin(). I can't say for sure without looking at all the code, though, and I'm afraid I'm too lazy to do that just now.

                                Comment

                                Working...
                                X