Recent Posts

Pages: [1] 2 3 ... 10
Outpost 2 Update / Re: Updates for Outpost 2 1.3.7
« Last post by Vagabond on Today at 09:00:54 AM »
Well we passed the target date.

Hooman, how did it all run on Linux via Wine?

Does an admin for the site want to get it posted?

Computers & Programming General / Re: Learning C through a fun project?
« Last post by Vagabond on April 24, 2018, 12:01:05 PM »
I read through the chapter on bit operations and did a couple of the exercises associated with bit operations. Very interesting. Also relevant sense MapData uses a couple of bit operations. Not that my solutions matter to anyone, but they are pasted below.

Code: [Select]
// Checks if the compiler performs bit right shifts as arithmetic or logical
_Bool ArithmeticRightShift(void)
signed int test = -1;
test >>= 1;

return test < 0;

// returns how many bits are contained within an int for the compilation
unsigned int IntBitSize()
unsigned int test = ~0;
unsigned int intBitSize = 0;

while (test > 0)
test <<= 1;

return intBitSize;

// Checks if the supplied bit is set to 1 (ON) in the number. Bit counts from left to right.
_Bool IsBitSet(unsigned int number, unsigned int bitToSet)
unsigned int bitShift = IntBitSize() - bitToSet;

if (bitShift < 0) {
return 0;

number >>= bitShift;

return number & 1;

// Sets the supplied bit in the number to 1. Bit counts from left to right.
unsigned int SetBit(unsigned int number, unsigned int bitToSet)
unsigned int bitShift = IntBitSize() - bitToSet;

if (bitShift < 0) {
return number;

unsigned int bitToAdd = 1 << bitShift;

return number | bitToAdd;

void main(void)
_Bool arithmeticRightShift = ArithmeticRightShift();

int intBitSize = IntBitSize();

_Bool isBitSet = IsBitSet(100, 2); //Should be false

int newNumber = SetBit(0, 30); // Should be 4
Test/Spam Forum / Re: Blight Discovered?
« Last post by leeor_net on April 23, 2018, 03:12:21 PM »
I know, I know. But I still thought it was a fun tie in. :D
Outpost 2 Mapper / Re: Better design for representing OP2 Maps in OP2Utility
« Last post by Vagabond on April 23, 2018, 11:26:55 AM »
Good news! I managed to read an Outpost 2 map to memory and then save it as a new file on hard drive. It is the exact same size as the original and loads properly into Outpost 2! You can see the pull request here:

Of course this only happened because Hooman has documented the exact contents of a vol file through his own research. And he provided an example in the old mapper to follow. I just wrote it in C++11/14 style without the COM added in and probably adding my own set of blunders to the process.

I created a merge conflict as well, so this branch will need to be manually merged. I saw the conflict coming, but let it develop so I could try merging them manually using TortoiseGit. Hopefully I don't regret that decision...

The next project will be introducing the enum cellType.

MapWriter currently uses fstream to save the file. Are we interested in this being a more generic StreamWriter? If so, this would be queued behind adding the enum cellType. I'm not sure this is worth our time or not though?

Currently, the MapData class in OP2Utility fairly closely mirrors the actual content of an Outpost 2 map file. We need to decide if we want to break the file into some sort of TilesetManager as the originally mapper did. Since Outpost 2 saves all the tileset and tileGroup information straight in each map file, it is all contained in MapData. We could separate this data off into a TilesetManager instead though. I think there are pros and cons to both methods.

It is nice that MapData currently mirrors the saved map file structure and that it behaves like a map does in Outpost 2 (that the tileset and tileGroup information is embedded and could change for each loaded map). However, a mapper would probably prefer the data to be separate concerns. If they are separate concerns, the mapper will still need to understand that they are really not actually separate so when loading a new map it needs to force changing out the tilesets and tileGroups.

Projects / Re: OP2Archive Application Development
« Last post by Vagabond on April 23, 2018, 11:16:49 AM »

Unfortunately how Outpost 2 consumes vol and clm files internally is beyond my knowledge. I only know a fair amount about the actual file format due to Hooman's coaching and excellent documentation. He would probably be in a better spot to answer a question like this.

OutpostHD / Status Update (April, 2018)
« Last post by leeor_net on April 22, 2018, 07:13:46 PM »
Hey forumites!

It's been a couple of weeks and I figured it was time for another update.

I've mostly finished the migration to github. I've been using Git for the code entirely and I'm slowly starting to move over the tasks from Redmine. Redmine is great and I do love it but I think using a fully integrated solution like what GitHub has to offer just makes too much sense to ignore... so that's kind of going to be a big project because there are no native tools to export tasks/issues from Redmine to GitHub... so manual copy/pasting seems to be in order. Bleh. So be it.

As far as development is concerned, I'm figuring I'll continue using Redmine for v0.7.5 (I've copied the remaining open tasks over to GitHub) so will be updating them together but moving forward I'll switch over entirely to GitHub.

Anyway, I've been committing my most recent code changes to GitHub so the SVN repository is now more of a historical archive rather than an active developer history. The biggest differences between the repositories is that the SVN repository contains all of the data whereas GitHub only contains the source code and project files. Since GitHub is operated by a 3rd party, I didn't want to upload potentially infringing copyrighted materials (graphics) from Outpost. So I removed the data directory entirely from the repository and scrubbed the history. I haven't yet decided how to keep the game resources/assets synched during development... but they're not changing much atm so perhaps I'll just do that manually (open to suggestions).

Finally, it's been slow going but I'm starting to get into a groove again. I've got the production system mostly implemented. There are a few things I still want to flesh out: robot handling with Robot Command Centers, a Warehouse Interface so that you can see what products are stored in a given warehouse (and dump them if necessary), building materials, road materials and more. It's all in there but it's very basic and you can't see it happening unless you're staring at the debugger. So I want to finish that up and tackle a few usability issues before I push out the newest version.


Migration to GitHub is mostly done, I'm moving from Redmine to GitHub's issue tracker, OPHD v0.7.5 is almost finished.
Game Discussion General / Re: Chaotic Planar Prison - Prototype V7
« Last post by leeor_net on April 22, 2018, 04:16:10 PM »
Fair enough.
Projects / Re: OP2Archive Application Development
« Last post by leeor_net on April 22, 2018, 04:15:41 PM »
VOL and ZIP are two totally different formats... if the main executable (outpost2.exe) is what loads the VOL files, changing it to load ZIP files instead would be non trivial. On the other hand, if the VOL files are loaded up by one of the various DLL's, adding ZIP support should be straight forward.

But I haven't followed along closely enough to know this (which is why I'm posing the question to Hooman/Vagabond ;)  )
Projects / Re: OP2Archive Application Development
« Last post by lordpalandus on April 22, 2018, 03:50:16 PM »
Well, as the game can load loose VOL files, I'd say it could also load zip files. Or renamed zip files.
Game Discussion General / Re: Chaotic Planar Prison - Prototype V7
« Last post by lordpalandus on April 22, 2018, 03:48:06 PM »
I plan to. Eventually. I have higher priority stuff that needs doing first though.

I'll look into providing a Binary executable when I reach Alpha Status. At that point, the game will be more of a game, rather than a modified tutorial, and thus will be worth taking the time into looking at making it more new user friendly.
Pages: [1] 2 3 ... 10