HOI 3 dispo en pré-commande sur Steam, activation le 7 aout

von Aasen
Margrave de Brandebourg
Messages : 17188
Enregistré le : mar. août 17, 2004 8:29 pm

Re: HOI 3 dispo en pré-commande sur Steam, activation le 7 aout

Message par von Aasen »

Bon eh bien je vous laisse tester le tout :)

Pour ma part j'ai téléchargé la démo et ne l'ait même pas installée, lui préférant Heroes of Might and Magic III ou Europa Universalis III IN ... je crois que j'ai trop joué aux précédents opus pour pouvoir apprécier un nouveau volet. On est quand même toujours confronté aux mêmes choix, et l'ajout d'options supplémentaires n'améliore que marginalement la lassitude que l'on éprouve en lançant sa treizième grande campagne avec le Royaume-Uni ...
Avatar du membre
Boudi
Khan Océanique
Messages : 31350
Enregistré le : sam. août 28, 2004 12:47 pm
Localisation : St-Etienne, FRANCE.

Re: HOI 3 dispo en pré-commande sur Steam, activation le 7 aout

Message par Boudi »

J'en suis un peu au même stade que toi, sauf... que j'ai même pas téléchargé la démo. J'ai téléchargé le manuel, rien que l'idée de l'ouvrir me repousse de l'ordinateur.

Quand est-ce qu'on se fait une bonne vieille PBEM CMBB, mon bon Von ? :chicos:
« Et c’est parti ! (Поехали! [Poïekhali!]) »
https://fr.pobediteli.ru/
Un petit calcul, et on s’en va !
Avatar du membre
griffon
Empereur Intergalactique
Messages : 42611
Enregistré le : mer. août 18, 2004 5:26 pm
Localisation : Brest

Re: HOI 3 dispo en pré-commande sur Steam, activation le 7 aout

Message par griffon »

je vais aussi attendre un peu

(j'ai passé la matinée sur le forum paradox :? )


la carte et le graphisme je m'en moque si le systeme est bon

mais la lenteur semble réelle quel que soit la machine

meme si la cause semble identifiée

( cela viendrait du systeme de commerce et de diplomatie )


pas grave je me concentre sur WITP

et pour la premiere fois je vais lire le manuel de A à Z

car il est sur mon "Hibook"
SOL INVICTVS

Au printemps, je vais quelquefois m'asseoir à la lisière d'un champ fleuri.
Lorsqu'une belle jeune fille m'apporte une coupe de vin , je ne pense guère à mon salut.
Si j'avais cette préoccupation, je vaudrais moins qu'un chien

Avatar du membre
griffon
Empereur Intergalactique
Messages : 42611
Enregistré le : mer. août 18, 2004 5:26 pm
Localisation : Brest

Re: HOI 3 dispo en pré-commande sur Steam, activation le 7 aout

Message par griffon »

et pour consoler Paradox

je conseille fortement EU3 dans sa version "In Nomine"

pour ceux qui ne l'ont pas encore !
SOL INVICTVS

Au printemps, je vais quelquefois m'asseoir à la lisière d'un champ fleuri.
Lorsqu'une belle jeune fille m'apporte une coupe de vin , je ne pense guère à mon salut.
Si j'avais cette préoccupation, je vaudrais moins qu'un chien

Avatar du membre
Emp_Palpatine
Eco-Citoyen
Eco-Citoyen
Messages : 17898
Enregistré le : sam. août 21, 2004 12:37 pm
Localisation : Le XIXème (Siècle, pas arrondissement)

Re: HOI 3 dispo en pré-commande sur Steam, activation le 7 aout

Message par Emp_Palpatine »

C'est vrai que c'est pas mal, un jeu fini...

Même si je pense essayer Magna Mundi ou MEIOU quand leurs nouvelles versions sortiront, histoire de voir ce qu'ils ont fait du système de conversions!
Vous pensez tous que César est un con? Vous pensez que le consul et son conseiller sont des cons? Que la police et l'armée sont des cons? Et vous pensez qu'y vous prennent pour des cons? Et vous avez raison, mais eux aussi! Parce que depuis le temps qu'y vous prennent pour des cons, avouez que vous êtes vraiment des cons. Alors puisqu'on est tous des cons et moi le premier, on va pas se battre.
Avatar du membre
Boudi
Khan Océanique
Messages : 31350
Enregistré le : sam. août 28, 2004 12:47 pm
Localisation : St-Etienne, FRANCE.

Re: HOI 3 dispo en pré-commande sur Steam, activation le 7 aout

Message par Boudi »

Je me mettrai à HOI3...avec ma prochaine config. Ce qui laisse le temps à Para de corriger les problèmes d'optimisation du code et de sortir des patchs aux petits oignons, p'tet même sans doute une version gold, HOI3 + add-on.
« Et c’est parti ! (Поехали! [Poïekhali!]) »
https://fr.pobediteli.ru/
Un petit calcul, et on s’en va !
Avatar du membre
Charline_G_Kristin
Clavier en Or
Clavier en Or
Messages : 173
Enregistré le : mar. oct. 09, 2007 10:47 am
Localisation : Pas loin du Bambesch...

Re: HOI 3 dispo en pré-commande sur Steam, activation le 7 aout

Message par Charline_G_Kristin »

Je confirme pour la lenteur. Pour vous donner une idée, le temps passe aussi vite dans hoi3 en vitesse max que dans hoi2 en vitesse "au dessus de la moyenne" ; et ce sur un ordinateur décent (Core2Duo2*2.66ghz, 4go de ram, radeon HD4850)
Urial
Serenissimus augustus a Deo coronatus magnus pacificus imperator
Messages : 11746
Enregistré le : mer. août 10, 2005 1:18 pm
Meilleur jeu 2008 : HOI2
Meilleur jeu 2009 : Blood Bowl
Meilleur jeu 2010 : Victoria II
Meilleur jeu 2011 : Civ V
Localisation : Gif sur yvette (91)
Contact :

Re: HOI 3 dispo en pré-commande sur Steam, activation le 7 aout

Message par Urial »

c'est vrai quec'est un peu lent mais comme je ne connais pas encore le systeme a fond ^^ cela ne me derange pas:)

peut etre faudrait il baisser les resolutions au minimum pour voir si cela augmente la rapidité du jeu :P
Patron du BIG, la chaine youtube qui vous veux du mal !
Avatar du membre
Charline_G_Kristin
Clavier en Or
Clavier en Or
Messages : 173
Enregistré le : mar. oct. 09, 2007 10:47 am
Localisation : Pas loin du Bambesch...

Re: HOI 3 dispo en pré-commande sur Steam, activation le 7 aout

Message par Charline_G_Kristin »

Quand on veut découvrir le jeu, une vitesse lente, c'est bien, mais en se projetant un peu dans le futur, ça signifie surtout qu'un joueur sur le scénario 1936 va salement s'ennuyer jusqu'à la baston, surtout s'il campe l'américain. Dans HOI2, j'apprécie que les premières années avant la guerre passent rapidement.
Avatar du membre
griffon
Empereur Intergalactique
Messages : 42611
Enregistré le : mer. août 18, 2004 5:26 pm
Localisation : Brest

Re: HOI 3 dispo en pré-commande sur Steam, activation le 7 aout

Message par griffon »

Urial a écrit :c'est vrai quec'est un peu lent mais comme je ne connais pas encore le systeme a fond ^^ cela ne me derange pas:)

peut etre faudrait il baisser les resolutions au minimum pour voir si cela augmente la rapidité du jeu :P

c'est pas la resolution ou le graphisme

c'est le systeme de commerce , de diplo et de commerce

qui met les machines à genoux ! :sad:
SOL INVICTVS

Au printemps, je vais quelquefois m'asseoir à la lisière d'un champ fleuri.
Lorsqu'une belle jeune fille m'apporte une coupe de vin , je ne pense guère à mon salut.
Si j'avais cette préoccupation, je vaudrais moins qu'un chien

Avatar du membre
griffon
Empereur Intergalactique
Messages : 42611
Enregistré le : mer. août 18, 2004 5:26 pm
Localisation : Brest

Re: HOI 3 dispo en pré-commande sur Steam, activation le 7 aout

Message par griffon »

http://forum.paradoxplaza.com/forum/sho ... p?t=417809


After 12 hours of playing and not even reaching 1942 I decided to look into why HoI3 runs so slow. One thing I noticed was everytime an hour blocked (froze on the hour before continuing) the message/event panel would spam a bunch of trade info, spy info etc. So it occured to me: the ai is what is eating up all the time making constant decisions about diplomacy and potentially other things.

It's not going to be rendering (obviously since it's fine when paused) and I really doubted combat or pathfinding would be slow (unless they just learned to code a week ago).

Soooo I dug into ./script/ and opened the ai_diplomacy.lua file to see what kind of shit was going on.



Single functions were being called to handle so many decisions with so many logical branches of code that it was no wonder speed was a pile of crap, just look at this function for a SINGLE trade offer.


Code:

Code : Tout sélectionner

function DiploScore_OfferTrade(ai, actor, recipient, observer, action)
	if observer == actor then
		return 100 -- handled from foreign minister
	else -- evaluate offer of trade from actor
		--Utils.LUA_DEBUGOUT("TRADE ========")
		--Utils.LUA_DEBUGOUT("actor: " .. tostring( actor ))
		--Utils.LUA_DEBUGOUT("recipient: " .. tostring( recipient ))
		local score = 0
		local actorCountry = actor:GetCountry()
		local recipientCountry = recipient:GetCountry()
		local route = action:GetRoute()
		
		if ai:AlreadyTradingResourceOtherWay( action:GetRoute() ) then
			return 0
		end
		
		--Utils.LUA_DEBUGOUT("from: " .. tostring( route:GetFrom() ))
		--Utils.LUA_DEBUGOUT("to: " .. tostring( route:GetTo() ))
		
		local MAX_GOODS = CGoodsPool._GC_NUMOF_-1
		for goods = 0, MAX_GOODS do
			local balance = recipientCountry:GetDailyBalance(goods):Get()
			if goods == CGoodsPool._SUPPLIES_ then
				balance = math.min( balance, recipientCountry:GetSupplyBalanceAverage():Get() )
			end
			
			local absBalance = math.abs(balance)
			local inTrade = route:GetTradedFromOf(goods):Get()
			local outTrade = route:GetTradedToOf(goods):Get()
			if absBalance > 0.005 and (outTrade > 0.01 or inTrade > 0.01) then
				--Utils.LUA_DEBUGOUT("____________goods : " .. GOODS_TO_STRING[goods] )
				--Utils.LUA_DEBUGOUT("balance : " .. balance )
				
				if inTrade > 0.001 and absBalance > 0.001 then
					--Utils.LUA_DEBUGOUT("GetTradedToOf: " .. inTrade)
					local tradeFactor = 0.0
					if balance < 0.0 then
						tradeFactor = math.min(inTrade / (-balance) * 2, 1.0)
						score = score + math.min(tradeFactor, 1.0) * 100
						--Utils.LUA_DEBUGOUT("tradefactor: " .. tradeFactor)
						--Utils.LUA_DEBUGOUT("inTrade: " .. inTrade)
						--Utils.LUA_DEBUGOUT("balance: (-)" .. balance)
					else
						if not (goods == CGoodsPool._MONEY_) then
							tradeFactor = math.min(inTrade / balance, 1.0) * 0.5
							score = score - math.min(tradeFactor * 2, 1.0) * 100
							--Utils.LUA_DEBUGOUT("tradefactor: " .. tradeFactor)
							--Utils.LUA_DEBUGOUT("inTrade: " .. inTrade)
							--Utils.LUA_DEBUGOUT("balance: ()" .. balance)
						end
					end
					
					--Utils.LUA_DEBUGOUT("tradefactor: " .. tradeFactor)
					--Utils.LUA_DEBUGOUT("score: " .. score)
				end
				
				if outTrade > 0.001 then
					--Utils.LUA_DEBUGOUT("GetTradedFromOf : " .. outTrade )
					--local tradeFactor = 0
					--if (balance > 0) then
					--	tradeFactor = (absBalance - outTrade) / absBalance
					--else
					--	score = 0
					--end
					--score = score + tradeFactor * 100
					
					if balance > 0.0 then
						tradeFactor = math.min(outTrade / (balance), 1.0)
						if tradeFactor > 0.95 then
							if tradeFactor > 0.999999 then
								tradeFactor = 0
							else
								tradeFactor = (0.06 - tradeFactor - 0.95)
							end	
							score = score + math.min(tradeFactor, 1.0) * 100
						elseif tradeFactor > 0.7 then
							score = score + 85
						elseif tradeFactor > 0.3 then
							score = score + 75
						elseif tradeFactor > 0.001 then
							score = score + 60
						end
						--score = score + math.min(tradeFactor, 1.0) * 100
						--Utils.LUA_DEBUGOUT("tradefactorz: " .. tradeFactor)
						--Utils.LUA_DEBUGOUT("outTrade: " .. outTrade)
						--Utils.LUA_DEBUGOUT("balance: (-)" .. balance)
					else
						--tradeFactor = math.min(outTrade / balance, 1.0) * 0.5
						score = score - 1000 -- math.min(tradeFactor * 2, 1.0) * 100
						--Utils.LUA_DEBUGOUT("tradefactor: " .. tradeFactor)
						--Utils.LUA_DEBUGOUT("outTrade: " .. outTrade)
						--Utils.LUA_DEBUGOUT("balance: (-)" .. balance)
					end
					
					
					--Utils.LUA_DEBUGOUT("tradefactor: " .. tradeFactor)
					--Utils.LUA_DEBUGOUT("score: " .. score)
				end

				--Utils.LUA_DEBUGOUT("____________")
			end
		end
		
		-- we need transports to trade
		if actorCountry:NeedConvoyToTradeWith( recipient ) then
			if route:GetConvoyResponsible() == recipient then
				if recipientCountry:GetTransports() == 0 then
					score = 0
				end
			end
		end
		
		--Utils.LUA_DEBUGOUT("score before strategy" .. score)
		
		if score > 0.001 or score < -0.001 then
					
			if score > 30 then			
				local rel = ai:GetRelation(recipient, actor)
				local strategy = recipient:GetCountry():GetStrategy()
				score = score - strategy:GetAntagonism(actor) / 15				
				score = score + strategy:GetFriendliness(actor) / 15
				score = score - rel:GetThreat():Get() / 2
				if rel:IsGuaranteed() then
					score = score + 5
				end
				if rel:HasFriendlyAgreement() then
					score = score + 10
				end
				if rel:AllowDebts() then
					score = score + 5
				end
				if rel:IsFightingWarTogether() then
					score = score + 15
				end
				
				--Utils.LUA_DEBUGOUT("GetAntagonism" .. tostring(strategy:GetAntagonism(actor)))
				--Utils.LUA_DEBUGOUT("GetFriendliness" .. tostring(strategy:GetFriendliness(actor)))
				--Utils.LUA_DEBUGOUT("GetThreat" .. tostring(rel:GetThreat():Get()))
				--Utils.LUA_DEBUGOUT("score after country stuff" .. score)
				local relation = rel:GetValue():GetTruncated()
				score = score + relation / 5
			

			end
			--Utils.LUA_DEBUGOUT("score after country stuff" .. score)
		end
		--Utils.LUA_DEBUGOUT("===================\n")
		return Utils.CallScoredCountryAI(recipient, 'DiploScore_OfferTrade', score, ai, actor, recipient, observer)
		
	end
endThis is after a check in the minister AI to see if it would like to propose a trade, it gets worse.


Code:
function ProposeTrades(minister)
	local SMALLEST_TRADE = 0.03
	local ministerTag = minister:GetCountryTag()
	local ministerCountry = minister:GetCountry()
	local ai = minister:GetOwnerAI() 
	local strategy = ministerCountry:GetStrategy()
	
	local bestScore = -10000
	local bestAction = nil
	
	-- TODO: SCALE WITH AMOUNT THEY HAVE IN STOCKPILE FOR "STABILITY"

	-- see what we are low on and find someone who is hoarding it
	local MAX_GOODS = CGoodsPool._GC_NUMOF_-1
	local myMoney = ministerCountry:GetDailyBalance( CGoodsPool._MONEY_ ):Get()
	for goods = 0, MAX_GOODS do
		if not (goods == CGoodsPool._MONEY_) then
			local balance = ministerCountry:GetDailyBalance( goods ):Get()
			if balance < 0.01 and myMoney > 0.01 then
				--Utils.LUA_DEBUGOUT( "I'm low on " .. goods .. tostring(ministerTag) )
				for country in CCurrentGameState.GetCountries() do
					local countryTag = country:GetCountryTag()

					if country:Exists() and countryTag:IsReal() and
					not (ministerCountry:HasDiplomatEnroute(countryTag)) and
					not (countryTag == ministerTag) then
					
						local rel = ministerCountry:GetRelation( countryTag )
				
						local theirBalance = country:GetDailyBalance(goods):Get() * 0.6
						if goods == CGoodsPool._SUPPLIES_ then
							theirBalance = math.min( theirBalance, country:GetSupplyBalanceAverage():Get() * 0.6 )
						end
						
						if theirBalance > 0.01 then
							local requested = math.min( theirBalance, -balance )
							local action = CTradeAction( ministerTag, countryTag )

							if action:IsValid() and action:IsSelectable() then
								action:SetTrading( CFixedPoint(requested), goods )
								local money = action:GetTrading( CGoodsPool._MONEY_, ministerTag ):Get()
								
								local factor = 1.0
								if money > myMoney then
									factor = myMoney / money - 0.08
									
									if factor > 0.01 then
										local action2 = CTradeAction( ministerTag, countryTag )
										local amount = requested * factor
										if amount > SMALLEST_TRADE then -- remove small stuff
											action2:SetTrading( CFixedPoint(amount), goods )
											
											local score = 70 --balance
											score = score - rel:GetThreat():Get() * CalculateAlignmentFactor(ai, ministerCountry, country)
											score = score + (100 * amount / math.abs(balance))
											score = score + math.floor(theirBalance / 10) -- big producer bonus = more stable
											
											-- we need transports to trade
											if ministerCountry:NeedConvoyToTradeWith( countryTag ) then
												if action2:GetRoute():GetConvoyResponsible() == ministerTag then
													if ministerCountry:GetTransports() == 0 then
														score = 0
													end
												else
													if countryTag:GetCountry():IsAtWar() then
														score = score - 20
													end
												end
											end
											
											local acceptanceChance = action2:GetAIAcceptance()
											acceptanceChance = acceptanceChance - minister:GetSpamPenalty(countryTag)
											if ( factor > 0.01 and acceptanceChance > 50 ) then
												if score > bestScore and action2:IsConvoyPossible() 
												and (not ai:AlreadyTradingResourceOtherWay( action2:GetRoute() ) )
												then
													bestAction = action2
													bestScore = score
												end
											end
										end -- if amount
									end
								elseif requested > SMALLEST_TRADE then
									local score = 70 --balance
									
									score = score - rel:GetThreat():Get() * CalculateAlignmentFactor(ai, ministerCountry, country)
									score = score + (100 * requested / math.abs(balance))
									score = score + math.floor(theirBalance / 10) -- big producer bonus = more stable
									
									-- we need transports to trade
									if ministerCountry:NeedConvoyToTradeWith( countryTag ) then
										if action:GetRoute():GetConvoyResponsible() == ministerTag then
											if ministerCountry:GetTransports() == 0 then
												score = 0
											end
										else
											if countryTag:GetCountry():IsAtWar() then
												score = score - 20
											end
										end
									end
										
									local acceptanceChance = action:GetAIAcceptance()
									acceptanceChance = acceptanceChance - minister:GetSpamPenalty(countryTag)
									if ( factor > 0.01 and acceptanceChance > 50 ) then
										if score > bestScore and action:IsConvoyPossible()
										and (not ai:AlreadyTradingResourceOtherWay( action:GetRoute() ) )
										then
											bestAction = action
											bestScore = score
										end
									end
								end
							end
						end
					end	
				end
			end
		end	
	end
	
	if bestAction then
		ai:PostAction( bestAction )
	end
	
end
Lua is not fast when used in this way and especially when functions like these are being called nearly 200 times EVERY IN GAME HOUR (or every couple hours or per day, depends on how often they do it, you can tell when the hours stall). Potentially they're not even staggering the AI updates and simply doing it all at once, as opposed to spreading it across the month doing a few every day/hour.

Won't take my word for it? Edit the lua files to all return 0 so that no trade or spy or diplomacy logic is performed. The game runs through days at lightning speed.

Why don't I think this can be easily solved? Because they'd have to re-write this AI logic in C/C++ where it wouldn't even stumble to process this but as a result you'd lose the cool modable AI potential. Other alternatives include staggering the updates across different frames, but they may already be doing this. Lastly they could potentially write a system to process lua in chunks on threads then update lots of lua states at once; however this would require a significant change in the way the AI works and interfaces back with C in order to make it thread safe and work in a data processing In-Out way.

Sorry to ramble on but just wanted everyone to know my perspective on the performance problem they have. I don't really blame them here because it's clear what they wanted it just has drawbacks and will require some serious thinking to get around it. Hopefully people will understand this and not just mindlessly claim "IT'S A FLOP! HOW COULD THEY HAVE DONE SOMETHING THIS STUPID?".
SOL INVICTVS

Au printemps, je vais quelquefois m'asseoir à la lisière d'un champ fleuri.
Lorsqu'une belle jeune fille m'apporte une coupe de vin , je ne pense guère à mon salut.
Si j'avais cette préoccupation, je vaudrais moins qu'un chien

von Aasen
Margrave de Brandebourg
Messages : 17188
Enregistré le : mar. août 17, 2004 8:29 pm

Re: HOI 3 dispo en pré-commande sur Steam, activation le 7 aout

Message par von Aasen »

Boudi a écrit :Quand est-ce qu'on se fait une bonne vieille PBEM CMBB, mon bon Von ? :chicos:
Hé j'avais pas vu ce message! Envoie-moi un mp si ça te tente vraiment :P
Avatar du membre
griffon
Empereur Intergalactique
Messages : 42611
Enregistré le : mer. août 18, 2004 5:26 pm
Localisation : Brest

Re: HOI 3 dispo en pré-commande sur Steam, activation le 7 aout

Message par griffon »

bon ces 39 euros il faudras bien les mettre un jour finalement

j'ai craqué !


:?
SOL INVICTVS

Au printemps, je vais quelquefois m'asseoir à la lisière d'un champ fleuri.
Lorsqu'une belle jeune fille m'apporte une coupe de vin , je ne pense guère à mon salut.
Si j'avais cette préoccupation, je vaudrais moins qu'un chien

Avatar du membre
jagermeister
Grand Inquisiteur
Messages : 23896
Enregistré le : ven. janv. 28, 2005 9:54 pm
Localisation : Cosne sur Loire

Re: HOI 3 dispo en pré-commande sur Steam, activation le 7 aout

Message par jagermeister »

:lolmdr:

Bienvenue au club. :signal:
Internet ayant été popularisé par l'apparition du World Wide Web, les deux sont parfois confondus par le public non averti. Le World Wide Web n'est pourtant que l'une des applications d'Internet.
http://fr.wikipedia.org/wiki/Internet
Le site ultime pour les managers virils et huilés.
Le site préféré des vieux loups de mer.
Avatar du membre
Charline_G_Kristin
Clavier en Or
Clavier en Or
Messages : 173
Enregistré le : mar. oct. 09, 2007 10:47 am
Localisation : Pas loin du Bambesch...

Re: HOI 3 dispo en pré-commande sur Steam, activation le 7 aout

Message par Charline_G_Kristin »

Je crois que personnellement, je vais patiemment attendre l'évolution du jeu via les divers patches et mods avant d'investir cette somme. Je préfère rester prudent. J'ai toujours en tête le souvenir de mon dernier achat inconsidéré, qui est l'inénarrable Mission Président... Alors forcément, ça conduit à être très très prudent...
Répondre

Retourner vers « Hearts of Iron III »