I vaguely remember seeing someone mention that before.
As far as updating the mapper, it was developed in VB6. I couldn't find any torrents to make a few adjustments to it, tried to rewrite it in VB.Net and thoroughly failed. I really don't know Win32 GUI programming at all so I'm pretty helpless when it comes to doing something like a map editor like that.
I've thought about doing a full-screen map editor using one of my current tile map editors as a base... but BlackBox mentioned something about doing it in-game. Don't know if that's a pipe dream or a future planned thing or in the works or whatever. Maybe I'll try my hand and putting together something that works for the time being. I had some thoughts about how to write out map files without needing to store the tile group elements in the maps themselves... but I'd have to figure out the binary map format. I don't think it's that complex, I just need to take the time to figure it out.
After the first of the year I think.
But to put something into perspective:
(http://i.imgur.com/FFMpIA6m.png) (http://imgur.com/FFMpIA6) (http://i.imgur.com/SrRH0wym.png) (http://imgur.com/SrRH0wy) (http://i.imgur.com/NxxmjD4m.png) (http://imgur.com/NxxmjD4)
This is an editor I put together for an RPG project but can be easily tailored to Outpost 2's map style. The map format I have for the game has four map 'layers'. Outpost 2 has no such concept so that can be immediately simplified. It ought to be pretty simple to come up with a terrain type automatically set based on tile that can be fine tuned later by the user.
There is a 'flood fill' tool that fills the entire map with a given selection and a 'stamp' tool that places down a set of tiles as selected from the tile palette. There is no 'auto terrain' tool but that's just a matter of figuring out the basic math for that and then setting up a lookup to get the correct index for different transitions.
Anyway, point being if anybody is interested in helping to flesh out a new map editor that can make it easier to build new maps from scratch I can make the necessary modifications to this code and upload to a new project directory.
On that note, I think I've way hijacked this thread so if there's interest we can open a new thread about it.
I'm having trouble setting up the AI player in multiplayer. The AI's units are appearing as white dots on the mini-map and occasionally fight each other. So I think I'm not properly initializing the AI player. I don't see how to do that using the established macro ExportLevelDestailsEx.
I'm looking to have 2 humans and 1 AI. I found the following post by Hooman long ago, but it didn't make total sense to me: http://forum.outpost2.net/index.php/topic,4273.msg64668.html#msg64668.
I am trying to figure out if the AI player's color is randomly set to a color not taken by one of the 2 human players or if I have to manually set it, but I'm having trouble testing it out.
Anyways, here is the gist of the code I have so far. InitializeScenario is called from InitProc().
/*#define ExportLevelDetailsEx(levelDesc, mapName, techTreeName, missionType, numPlayers, maxTechLevel, bUnitOnlyMission)*/
ExportLevelDetailsEx("2P, Convoy, 'Rescue Escort'", "RescueEscort.map", "PursuedTechTree.txt", MissionTypes::MultiLandRush, 3, 12, true);
void InitializeScenario(bool multiplayer)
{
... [Other code]
Player[Player0].GoHuman();
Player[Player0].GoPlymouth();
if (!multiplayer)
{
Player[Player0].SetColorNumber(PlayerColor::PlayerRed);
}
Player[Player1].GoPlymouth();
if (multiplayer)
{
Player[Player1].GoHuman();
}
else
{
Player[Player1].SetColorNumber(PlayerColor::PlayerGreen);
Player[Player1].GoAI();
}
Player[Player2].GoEden();
Player[Player2].GoAI();
if (!multiplayer)
{
Player[Player2].SetColorNumber(PlayerColor::PlayerBlue);
}
Player[Player0].AllyWith(Player1);
Player[Player1].AllyWith(Player0);
... [Other Code]
}
AIs take colors that aren't available in order - blue, red, green, yellow, cyan, magenta, black.
You should be able to initialize the AI player(s) with this:
SCRIPT_API SDescBlockEx DescBlockEx = { 1, 0, 0, 0, 0, 0, 0, 0 };
This will initialize one AI player. You can change more 0's to 1's to add more. So for example if you wanted two AIs, you'd do this:
SCRIPT_API SDescBlockEx DescBlockEx = { 1, 1, 0, 0, 0, 0, 0, 0 };
Just paste it in under the regular DescBlock.
AIs take colors that aren't available in order - blue, red, green, yellow, cyan, magenta, black.
You should be able to initialize the AI player(s) with this:
SCRIPT_API SDescBlockEx DescBlockEx = { 1, 0, 0, 0, 0, 0, 0, 0 };
This will initialize one AI player. You can change more 0's to 1's to add more. So for example if you wanted two AIs, you'd do this:
SCRIPT_API SDescBlockEx DescBlockEx = { 1, 1, 0, 0, 0, 0, 0, 0 };
Just paste it in under the regular DescBlock.
Nope, only DescBlockEx[0] does anything, so for 2 AIs it's:
SCRIPT_API SDescBlockEx DescBlockEx = { 2, 0, 0, 0, 0, 0, 0, 0 };