Page 1 of 2

Planning in KaM

PostPosted: 15 Nov 2014, 17:27
by pawel95
..

Re: 175 bowmen in 75

PostPosted: 15 Nov 2014, 18:07
by sado1
as in KaM planning is esssential?
Nope it´s not.
I disagree.

Re: 175 bowmen in 75

PostPosted: 15 Nov 2014, 21:19
by pawel95
as in KaM planning is esssential?
Nope it´s not.
I disagree.
Well it´s all about experience ;-)

Re: 175 bowmen in 75

PostPosted: 17 Nov 2014, 18:07
by Ben
Pawel, would you also agree that it is good to have your farms far away from your swine farms, you coal-consuming buildings away from your coal, and your weapon workshops away from your sawmills?

Re: 175 bowmen in 75

PostPosted: 18 Nov 2014, 14:09
by pawel95
I guess you know that I'm right. I haven't time to give you tips, how to place your farms more efficiently, you have to ask someone else for help. However I guess that hasn't anything to do with the topic? /ban /report /warning ??

Re: 175 bowmen in 75

PostPosted: 18 Nov 2014, 20:12
by Vatrix
Guys, please keep calm here, we're all friends here :wink:
Pawel, would you also agree that it is good to have your farms far away from your swine farms, you coal-consuming buildings away from your coal, and your weapon workshops away from your sawmills?
Try this:
KaM Remake 2014-11-18 21-11-08.jpg

Re: 175 bowmen in 75

PostPosted: 19 Nov 2014, 17:13
by Ben
Well, Vatrix, it seems that your city here would work fine if planning wasn't important in KaM ;)

Re: 175 bowmen in 75

PostPosted: 19 Nov 2014, 17:21
by Vatrix
You are right, planning is important in KaM multiplayer, but in singleplayer (which I prefer, because I'm playing total sheit in multiplayer) you can do pretty much anything you want, just like this nonsense I post above.

Re: 175 bowmen in 75

PostPosted: 19 Nov 2014, 21:27
by Ben
Then perhaps single player is too easy if you can plan like a baboon? At least in later levels as they should be more difficult.

Pawel was right about the off topic. I'll have to split this somehow...

Re: 175 bowmen in 75

PostPosted: 19 Nov 2014, 21:38
by Vatrix
Just delete off-topic stuff.

Re: Planning in KaM

PostPosted: 02 Dec 2014, 21:47
by Da Revolution
Planning is important to a certain extend. There are different types of planning in Kam though.

1. No planning and knowledge of the map at all. Often ends up in people asking for the spots of their resource.
2. Only checking the map for general directions of resources. People that only use this often end up with a lot of wasted space because they misjudged the distance by for example one or two tiles. Playing like that often works out decent
3. Making a small prebuild during the lobby or the just while building the school etc. THis is the method I preferred and used. Most of the time you just prebuild roads to for example the first trees/gold/farm. The rest of the stuff you plan during the game. This may result in cities like I used to build.
4. Saved pre builds (mostly of complete bases). This one is like making a puzzle. You know how it should look like and where the buildings should be. The only thing you basically decide during de game is when you put the pice (building) on its place. This method also ends up in well planned cities. This might reduce the innovation of the builds on certain locs though. Players who play like this often pick the same locs as far as I know.

Anyway in the end it doesn't matter much what your way of planning is, as long as you enjoy the game.

Re: Planning in KaM

PostPosted: 03 Dec 2014, 12:11
by dicsoupcan
i'm a #2 guy and it works fine for me :D

Re: Planning in KaM

PostPosted: 03 Dec 2014, 16:00
by Ben
I'm either a 2 or 3, depending on how long it is taking people to set "ready" in lobby.

I seldom play a location more than once within a month of even seasonal amount of time. With the exception of Golden Cliffs location 5, Cursed Ravine location 7, and BitD location 8, I doubt I've played a location more than 5 times within a year. It is for this reason that I don't use thorough prebuilds: it's just not useful. Players who are playing the same locations repeatedly (which I find lame) probably find pre building more useful.

Re: Planning in KaM

PostPosted: 03 Dec 2014, 16:23
by dicsoupcan
I seldom play a location more than once within a month of even seasonal amount of time. With the exception of Golden Cliffs location 5
With the exception of Golden Cliffs location 5
Golden Cliffs location 5


https://www.youtube.com/watch?v=ro_14Yre9Xc

Re: Planning in KaM

PostPosted: 07 Dec 2014, 13:18
by Esthlos
I'm either a 2 or 3, depending on how long it is taking people to set "ready" in lobby.

I seldom play a location more than once within a month of even seasonal amount of time. With the exception of Golden Cliffs location 5, Cursed Ravine location 7, and BitD location 8, I doubt I've played a location more than 5 times within a year. It is for this reason that I don't use thorough prebuilds: it's just not useful. Players who are playing the same locations repeatedly (which I find lame) probably find pre building more useful.
Theoretically it is possible to write a simple script that works on any map and that reveals the closest resource locations to each player.
(Revealing circles just big enough for the player to see what that resource is and where, but not enough to actually see anything else)

Do you think it would be useful?
I mean, this way players would have this much needed info without having to ask or use the editor... really, I've noticed that sometimes you can't even see your first stone mountain from your starting location! :O
How are you supposed to actually build a town there without first checking the map in the editor nor exploring your surroundings with laborers? :rolleyes:

(P.S. Despite its lenght, this script shouldn't really be heavy... at least, I didn't notice meaningful differences in the map's loading time)
(P.P.S. I've included it in a "Special map" version of Cursed Ravine, so that it can easily be seen in action)
  Code:
procedure aRevealResources; var aiHouses: array of Integer; var i: Integer; var i2: Integer; var iX: Integer; var iY: Integer; var aStartLoc: array of Record aX, aY: Integer; end; var aStone: array of Record aX, aY, aSqrDist: Integer; end; var aGold: array of Record aX, aY, aSqrDist: Integer; end; var aIron: array of Record aX, aY, aSqrDist: Integer; end; var aCoal: array of Record aX, aY, aSqrDist: Integer; end; var aiSqrDistance: array of Integer; begin SetLength(aStartLoc, States.LocationCount); SetLength(aStone, States.LocationCount); SetLength(aGold, States.LocationCount); SetLength(aIron, States.LocationCount); SetLength(aCoal, States.LocationCount); SetLength(aiSqrDistance, States.LocationCount); for i := 0 to States.LocationCount-1 do begin aStone[i].aSqrDist := -1; aGold[i].aSqrDist := -1; aIron[i].aSqrDist := -1; aCoal[i].aSqrDist := -1; iX := -1; iY := -1; if States.PlayerEnabled(i) = True then begin aiHouses := States.PlayerGetAllHouses(i); if Length(aiHouses) > 0 then begin for i2 := 0 to Length(aiHouses)-1 do if States.HouseType(aiHouses[i2]) = 11 then begin iX := States.HousePositionX(aiHouses[i2]); iY := States.HousePositionY(aiHouses[i2]); end; if iX = -1 then iX := States.HousePositionX(aiHouses[0]); if iY = -1 then iY := States.HousePositionY(aiHouses[0]); end; end; aStartLoc[i].aX := iX; aStartLoc[i].aY := iY; end; for iX := 1 to States.MapWidth-1 do for iY := 1 to States.MapHeight-1 do begin if (States.MapTileType(iX, iY) >= 128) AND (States.MapTileType(iX, iY) <= 137) then begin //stone for i := 0 to States.LocationCount-1 do begin if (aStartLoc[i].aX > -1) AND (aStartLoc[i].aY > -1) then aiSqrDistance[i] := ((aStartLoc[i].aX-iX)*(aStartLoc[i].aX-iX)+(aStartLoc[i].aY-iY)*(aStartLoc[i].aY-iY)); if (aStartLoc[i].aX <= -1) OR (aStartLoc[i].aY <= -1) then aiSqrDistance[i] := -1; if (aStone[i].aSqrDist = -1) AND (aiSqrDistance[i] > -1) then begin aStone[i].aSqrDist := aiSqrDistance[i]; aStone[i].aX := iX; aStone[i].aY := iY; end; end; i2 := 0; for i := 1 to States.LocationCount-1 do if ((aiSqrDistance[i] < aiSqrDistance[i2])) AND (aiSqrDistance[i] > -1) then i2 := i; if aiSqrDistance[i2] < aStone[i2].aSqrDist then begin aStone[i2].aSqrDist := aiSqrDistance[i2]; aStone[i2].aX := iX; aStone[i2].aY := iY; end; end; if (States.MapTileType(iX, iY) >= 144) AND (States.MapTileType(iX, iY) <= 147) then begin //gold for i := 0 to States.LocationCount-1 do begin if (aStartLoc[i].aX > -1) AND (aStartLoc[i].aY > -1) then aiSqrDistance[i] := ((aStartLoc[i].aX-iX)*(aStartLoc[i].aX-iX)+(aStartLoc[i].aY-iY)*(aStartLoc[i].aY-iY)); if (aStartLoc[i].aX <= -1) OR (aStartLoc[i].aY <= -1) then aiSqrDistance[i] := -1; if (aGold[i].aSqrDist = -1) AND (aiSqrDistance[i] > -1) then begin aGold[i].aSqrDist := aiSqrDistance[i]; aGold[i].aX := iX; aGold[i].aY := iY; end; end; i2 := 0; for i := 1 to States.LocationCount-1 do if ((aiSqrDistance[i] < aiSqrDistance[i2])) AND (aiSqrDistance[i] > -1) then i2 := i; if aiSqrDistance[i2] < aGold[i2].aSqrDist then begin aGold[i2].aSqrDist := aiSqrDistance[i2]; aGold[i2].aX := iX; aGold[i2].aY := iY; end; end; if (States.MapTileType(iX, iY) >= 148) AND (States.MapTileType(iX, iY) <= 151) then begin //iron for i := 0 to States.LocationCount-1 do begin if (aStartLoc[i].aX > -1) AND (aStartLoc[i].aY > -1) then aiSqrDistance[i] := ((aStartLoc[i].aX-iX)*(aStartLoc[i].aX-iX)+(aStartLoc[i].aY-iY)*(aStartLoc[i].aY-iY)); if (aStartLoc[i].aX <= -1) OR (aStartLoc[i].aY <= -1) then aiSqrDistance[i] := -1; if (aIron[i].aSqrDist = -1) AND (aiSqrDistance[i] > -1) then begin aIron[i].aSqrDist := aiSqrDistance[i]; aIron[i].aX := iX; aIron[i].aY := iY; end; end; i2 := 0; for i := 1 to States.LocationCount-1 do if ((aiSqrDistance[i] < aiSqrDistance[i2])) AND (aiSqrDistance[i] > -1) then i2 := i; if aiSqrDistance[i2] < aIron[i2].aSqrDist then begin aIron[i2].aSqrDist := aiSqrDistance[i2]; aIron[i2].aX := iX; aIron[i2].aY := iY; end; end; if (States.MapTileType(iX, iY) >= 152) AND (States.MapTileType(iX, iY) <= 155) then begin //coal for i := 0 to States.LocationCount-1 do begin if (aStartLoc[i].aX > -1) AND (aStartLoc[i].aY > -1) then aiSqrDistance[i] := ((aStartLoc[i].aX-iX)*(aStartLoc[i].aX-iX)+(aStartLoc[i].aY-iY)*(aStartLoc[i].aY-iY)); if (aStartLoc[i].aX <= -1) OR (aStartLoc[i].aY <= -1) then aiSqrDistance[i] := -1; if (aCoal[i].aSqrDist = -1) AND (aiSqrDistance[i] > -1) then begin aCoal[i].aSqrDist := aiSqrDistance[i]; aCoal[i].aX := iX; aCoal[i].aY := iY; end; end; i2 := 0; for i := 1 to States.LocationCount-1 do if ((aiSqrDistance[i] < aiSqrDistance[i2])) AND (aiSqrDistance[i] > -1) then i2 := i; if aiSqrDistance[i2] < aCoal[i2].aSqrDist then begin aCoal[i2].aSqrDist := aiSqrDistance[i2]; aCoal[i2].aX := iX; aCoal[i2].aY := iY; end; end; end; for i := 0 to States.LocationCount-1 do begin if aStone[i].aSqrDist > -1 then Actions.FogRevealCircle(i, aStone[i].aX, aStone[i].aY, 3); if aGold[i].aSqrDist > -1 then Actions.FogRevealCircle(i, aGold[i].aX, aGold[i].aY, 3); if aIron[i].aSqrDist > -1 then Actions.FogRevealCircle(i, aIron[i].aX, aIron[i].aY, 3); if aCoal[i].aSqrDist > -1 then Actions.FogRevealCircle(i, aCoal[i].aX, aCoal[i].aY, 3); end; end; procedure OnMissionStart; begin aRevealResources; end;