Outpost Universe Forums

Projects & Development => Projects => Outpost 2 Update => Topic started by: Hooman on May 01, 2018, 03:10:15 PM

Title: Updates for Outpost 2 1.3.8
Post by: Hooman on May 01, 2018, 03:10:15 PM
Alright, now that Outpost 2 1.3.7 has been released, I'm opening a new thread to collect updates for the next future release. Time now to turn attention towards Outpost 2 1.3.8 updates.


What I think should be a priority: Network connectivity issues have been a hurdle for a number of people for quite some time now. As such, I believe some long overdue updates to NetFix should be included. In particular:

And as always, new content would be desirable. I'm personally fond of colony games.
Title: Re: Updates for Outpost 2 1.3.8
Post by: Vagabond on May 03, 2018, 06:09:51 AM
Hooman,

Sounds good.

Perhaps we should add some sort of ping function? That would allow telling the user their computer is successfully communicating with the server even if no other matches are displayed?

-Brett
Title: Re: Updates for Outpost 2 1.3.8
Post by: Hooman on May 04, 2018, 06:49:38 AM
Ping statistics could be useful, especially if we could correlate it with expected or maximum game speed.
Title: Re: Updates for Outpost 2 1.3.8
Post by: Nova86 on June 20, 2018, 11:57:00 AM
At the risk of asking one of the dumbest questions ever...I like how The Mission randomly assigns a different colony color (sometimes just seeing Red and Blue gets a little old).  Is there any way to control that and allow the player to choose their colony color in either current or future colony games?    [/end dumb question]

Love the 1.3.7 update; I'm glad there are still people taking care of this game all these years later.  Thanks!
Title: Re: Updates for Outpost 2 1.3.8
Post by: Hooman on June 21, 2018, 09:56:11 AM
Hmm, there's currently no interface support for selecting colony colors. The level DLLs could select colony colors, and could randomize them if desired, though it's more typical to just leave them as default colors.

I suppose we could possibly modify the interface, though I'm somewhat biased against doing this. I don't see a great need or desire for this, so I'm inclined to spend development effort elsewhere. Would be curious if other people value being able to select colors though.

Failing that, maybe level designers will be inspired to experiment with colors after reading that.
Title: Re: Updates for Outpost 2 1.3.8
Post by: Vagabond on June 22, 2018, 01:43:56 AM
I would like to see a .ini module that hooked a scrollable rich text box and single image to the multiplayer game room screen. These 2 items would switch as the scenarios are switched through and provide details about the scenario.

We are starting to bundle scenarios that have unexpected behavior with the game. Such as Fractured alliance where clicking the day/night and disaster check boxes actually change the number of enemy bases. Several scenarios also have written backstories that are only readable by coming back to the forum.

I thought one way to implement this would be to allow adding 2 resources to a scenario dll. One would be a .rtf file containing the text for the text box. The other would be an image of X pixel size that would typically be a picture of the scenario's map.

There would be some implementation details to the map since some are tall and some are wide, but maybe just set a max width and height and center in either direction if it is smaller. The image could be anything really, but probably standard being a map render. It might also be possible to leverage the existing code in Outpost 2 to show a picture of a saved game on the saved game screen. Although I think providing an image is probably easier to implement.

I'd be willing to handle the gruntwork of adding resources to existing dlls and help with the coding and testing of the required .ini file. Someone else would really need to step in and locate/define the actual hooks into Outpost 2.

Thoughts?

-Brett
Title: Re: Updates for Outpost 2 1.3.8
Post by: Hooman on June 22, 2018, 01:17:48 PM
I kind of like that idea. I've thought previously the pre-game setup screens could use more details, or the ability for customization based on the level.

There's a lot to think about for such a modification though. We'd probably need input from a number of level designers to come up with a good plan for something like that.

This might also tie in with previous ideas about alternate map file formats, or the Python mission project.
Title: Re: Updates for Outpost 2 1.3.8
Post by: leeor_net on October 06, 2018, 12:21:23 AM
Giving this a poke to see where we're at with this version.
Title: Re: Updates for Outpost 2 1.3.8
Post by: Hooman on October 06, 2018, 12:54:11 AM
Collecting vague ideas. No work as yet.

Though I should mention the dialog box that can popup due to missing dependencies for the new UPnP module, which we should do something about. Sounds like there were some complications concerning recompiling it, and it seemed tied to an unusual version of the platform development tools.

I would like to work on some NetFix updates. I'd like to increase the logging ability so we can get more useful logs out of it for trouble shooting. I'd also like to see if it can be improved a little, either in terms of protocol updates, or in terms of user interface tweaks. It could provide a little more feedback to the user about what is happening in some situations.

I'm giving some extra thought to that player color selection idea, and the pre-game setup screens. Perhaps we could work on something to ease user interface updates. What makes me hesitant to tweak the user interface, is the amount of effort generally involved. However, if we developed better generic user interface support, it may lower the effort required.

We also need to find ways to ease developing new maps and missions. We really need to lower the effort required for that.

Hmm, would people be interested in anything like player game statistics, such as games played, games won/lost, or ranking systems? I think I generally prefer not having stats about me tracked, though for other people, they may find that fun, and it may bring out a desire to compete and play.
Title: Re: Updates for Outpost 2 1.3.8
Post by: leeor_net on October 06, 2018, 01:13:32 AM
Sounds good --

I've been doing some preliminary work on a new map editor. The biggest thing I want to offer is 'auto-tiling' of terrain brushes. I know, we've been over this a thousand times and there's supposedly no pattern. I say whatever -- it doesn't have to be perfect, does it? Can't we get it 'close enough'? Plus I think Vagabond was looking at adding a handful of tiles that would make terrain auto-tiling brushes much more feasible. This post I think (https://forum.outpost2.net/index.php/topic,6087.msg86303.html#msg86303)?

If that's the case then I'd like to get the op2-landlord project (https://github.com/OutpostUniverse/op2-landlord) updated and fixed to use the updated OP2 backend utility code, updated to the latest versions of NAS2D, get some drawing optimizations in place and get tile picking/painting going. Basically, I haven't touched it since last year so the code is going to need some work ... plus most of the map loading code is experimental and a proof-of-concept for using the NAS2D filesystem (which really can be dropped in favor of C++14 fs code). Actually, tbh, I wouldn't be opposed to rebuilding the op2-landlord project from scratch without the NAS2D dependency -- instead we could just use SDL2 (cross-platform input and window management) and OpenGL -- a map editor hardly needs the sort of utilities that NAS2D offers.

Anyway I think I'm heading off topic so I'll leave it at "Hey we should revisit the prototype map editor code I started on". I have a feeling if the three of us worked on the editor together we could bang something out pretty quick.
Title: Re: Updates for Outpost 2 1.3.8
Post by: Vagabond on October 06, 2018, 01:48:29 PM
I could probably work on solving the NetHelper DLL dependencies. Arklon, do you mind if I do some serious mucking around in NetHelper?

I'd like to see error/warning logging format standardized across the different add-ons. Mostly NetHelper and NetFix for now. I'm not sure if that means somehow feeding the data to op2ext for logging or just creating a standard log message format that each addon complies with. I'd be willing to work with Hooman on this effort.

Leeor, I never actually finished reviewing the tiles to determine exactly how many new tiles are needed to allow a reasonably standard autotiling script to work. I remember identifying at least 6 tiles and suspect the total is around a dozen. I still think this would be a fine use of the remaining tile indices the Outpost 2 has available. It would be helpful to chose a different name here as well. OP2-landlord doesn't easily translate into meaning a mapper without some background. I think the Landlord part is the game that the mapper code was forked from?

We already have a fix queued up that allows the console modder to work when spaces are encountered in the Outpost 2 executable absolute directory. (A bug I introduced in the last release). Some very minor improvements to exception handling in op2ext are also ready.

If we want to get serious about another release, I'd have to wrap up my work in OP2Utility and then switch development over. I wouldn't be able to handle working on both fronts at the same time (not enough time or brainspace). If we want to work this release, I'd want to re-release OP2Archive and OP2MapImager first since there have been a lot of changes to both programs that are not in the executable. I think this would probably take me about 2 weeks to wrap up?

The multiplayer lobby user interface tweaks are very important to me, but I wouldn't be helpful outside of pair programming as I don't know enough about OllyDbg, code hooks, or the underlying Windows code that Outpost 2 uses for showing GUI windows.

I'd like to see the Outpost 2 website improved. It would be great to show the current release number, release date, and a link to a changelog when downloading the newest version. Maybe even a list of previous releases and changelogs to reference. Maybe something that could correspond to this release?

If others are serious about putting time into another Outpost 2 release, I'll start wrapping up my work in OP2Utility for now.

-Brett
Title: Re: Updates for Outpost 2 1.3.8
Post by: Arklon on October 06, 2018, 04:05:43 PM
I could probably work on solving the NetHelper DLL dependencies. Arklon, do you mind if I do some serious mucking around in NetHelper?
The issue is you'll have to rebuild miniupnp and libnatpmp with a newer MSVC, and the author doesn't provide an up-to-date MSVC solution or anything for libnatpmp so you have to figure it out yourself. I was working on my own update a while back with some other minor improvements, but rebuilding those libs broke them.
Title: Re: Updates for Outpost 2 1.3.8
Post by: leeor_net on October 06, 2018, 05:23:51 PM
House of cards... love that development model.

Well, I'm open to assist wherever I can with rebuilding the libraries in MSVC.
Title: Re: Updates for Outpost 2 1.3.8
Post by: Vagabond on November 05, 2018, 05:12:30 PM
I've finished my planned updates on NetHelper.

NetHelper 1.5.3
- Updated to newer versions of libnatpmp and miniupnp.
  - Cuts down cleanup/destruction on application closing from 3 mins to 8 secs.
- Changed dependency references from precompiled library files to Git submodules.
- Removed dependencies on msvcr100.dll and msvcp100.dll by statically compiling.
- Set release compilation optimization properties closer to MSVC default settings.
- Removed deprecated POSIX networking functions.
- Update code to remove benign variable type conversion warning in Patcher.

We need to decide what area gets attention next. I could work towards creating a unified logging function through op2ext next. Or I could compile the final release version of NetHelper and integrate it into SVN. If we want to work on a unified logger, it might make sense to wait for finalizing the NetHelper release if we want it to start emitting logged messages.

If anyone wants to test NetHelper in its current form, message me and I'll compile it. Didn't get the impression in the other forum page people were interested in testing right now.

---
Edit

Nova86's suggestion on colony game color selection is interesting and I wouldn't mind it being implemented. Like Hooman said, I don't know that it would be a priority to work on though.

-Brett
Title: Re: Updates for Outpost 2 1.3.8
Post by: Hooman on November 06, 2018, 07:11:18 AM
I'm looking forward to these NetHelper updates.

Does the NetHelper still depend on forked copies of the dependencies, or have the updates allowed it to use the original source repositories?

It sounds like NetHelper is in a good stable release state, so I'd recommend packaging the updates for the next release. At the very least, it would be ready for anyone testing the next release. If there are logging updates, we could always repackage a newer version at a later time.



As for the color thing, there is something to be said about working on silly little side projects just to keep your skills sharp, or perhaps develop new skills. In particular, the ForcedExports project (which needs to be renamed still), could use some updates. That project was useful for developing new user interface components. Perhaps a player color selection mod would be a good excuse to work on it.
Title: Re: Updates for Outpost 2 1.3.8
Post by: Vagabond on November 07, 2018, 09:58:23 PM
NetHelper will still require the forked versions of dependencies. The forked versions no longer define the static lib within the source code though.

-Brett
Title: Re: Updates for Outpost 2 1.3.8
Post by: Hooman on November 08, 2018, 02:03:23 AM
Ok. I just took a peek at the difference. Looks to be mostly project setting changes, with an upgrade to a project file being a big one in particular. The defined macro changes looked like temporary edits. The one significant code change not incorporated into upstream seems to be for ssize_t.

I may have missed details though, as I didn't check too closely.
Title: Re: Updates for Outpost 2 1.3.8
Post by: Vagabond on November 12, 2018, 08:37:16 PM
The working copy of Outpost 2 has been updated with the newest version of NethHelper. You can find it and the associated PDB file for debugging at: https://github.com/OutpostUniverse/NetHelper/releases/tag/1.5.3.

A release tag was generated in Git to find this version again if ever needed.

Hooman, you are correct about the differences. Would be nice to incorporate the macro into the authors repo. I'm not so sure about all the project changes being pushed though. There is active development occurring on miniupnp, so we may want to pull a newer version from time to time.

Bogging down in the release of OP2MapImager. Learning some interesting things in the process though so that is nice. Otherwise, I was going to start working on adding the new known bugs and edit version info for the working copy of Outpost 2.

-Brett
Title: Re: Updates for Outpost 2 1.3.8
Post by: Vagabond on November 15, 2018, 09:23:29 PM
Just added the following commit to the SVN repository.

Update Outpost 2 version number and ChangeLog

 - Update internal version number used in multiplayer game checks to 1.3.0.8
 - Update About screen version number to 1.3.8
 - Swap new icon out with old icon
 - Add bug reports to ChangeLog
   - Game crashes sometimes when garage storage opened
   - Structure build overlay sometimes persists on map until shadows update

It occured to me we can just leave the old icon in the repository for ease of use with OllyDbg and just insert the newer icon right before release. This leaves the repository in a proper state for OllyDbg all the time. Unless there is any issue with this, I'll try to update the publishing notes to relfect this change.

Thanks,
Brett
Title: Re: Updates for Outpost 2 1.3.8
Post by: Hooman on November 16, 2018, 06:29:11 AM
Sounds good concerning the icon.

As for the bugs, I don't think those bugs are new in the recent version, just discovered/reported for the recent version. I would be hesitant to tag the bugs as relating specifically to any particular version without verification.
Title: Re: Updates for Outpost 2 1.3.8
Post by: Vagabond on November 16, 2018, 11:31:01 AM
Agreed the bugs are not related to a particular version. The bugs are at the top of the change log and not under a specific version. Happy to change format though if we want something else.

Brett
Title: Re: Updates for Outpost 2 1.3.8
Post by: dave_erald on November 17, 2018, 04:59:07 PM
I'll be blunt, version numbers and icons don't thrill me, how's the multiplayer connectivity coming? Does anyone have anything positive yet? Is the nethelper update testable? (Maybe I didn't ask that correctly, but you get my meaning) I'd like to get it and hope to test it with anyone that shows up on IRC (which is far few lately but every once and awhile they show up and just as quickly are never heard from again because game playing is a pain). 9ball seems to have relatively good success but I know there are hesitant people to port forward or worst case demilitarize zone there routers (terrible idea) but anywho.

There's my monthly rant. Thank you for your time
Title: Re: Updates for Outpost 2 1.3.8
Post by: Vagabond on November 18, 2018, 01:54:32 PM
Dave,

Go here: https://github.com/OutpostUniverse/NetHelper/releases

Just replace the NetHelper dll bundled with Outpost 2 with the one at that location. Make sure everyone who wants to play replaces it on their Outpost 2 copy as well.

I'm very interested to hear how it works or does not work for you.

The version information is very important. It keeps things like multiplayer matches from de-syncing halfway through due to mismatching versions of the game when someone doesn't download the newest version.

I'll give you the icon is purely aesthetic.

How is the novella progressing? I would enjoy reading another chapter.

-Brett
Title: Re: Updates for Outpost 2 1.3.8
Post by: Hooman on November 21, 2018, 01:23:40 AM
I actually rather enjoyed that little rant. It's very easy to get caught up in the details, so it's good to have someone remind you of the big picture once in a while.

There have been some improvements to the network modules. In particular, the NetHelper module had some updates concerning dependencies, which could cause it to fail to load. I believe it may silently fail to load in some cases, so people might not have been aware of a failure. The new version should fix that.

In terms of further improvement, I think we're actually in a bit of a bad position to improve connectivity at present. We probably need to start with better logging and diagnostics before we can improve connectivity further.

Actually, if we want something that works, and don't mind a bit of extra latency or bandwidth waste on the server, we could potentially route traffic through the game server for people who are not able to connect directly. It wouldn't necessarily scale well, though I don't think that matters with the current level of games played.

As for the compatibility concerns, @Brett (or @Arklon), are you sure it matters if everyone has an up-to-date copy of NetHelper? As far as I know, the NetHelper module isn't involved in communication between clients, only between the client and their own router. I don't believe it matters if people mix versions.


We should start switching more focus to network connectivity issues as we close out work on other things.
Title: Re: Updates for Outpost 2 1.3.8
Post by: dave_erald on November 26, 2018, 07:34:08 PM
Afternoon peeps, what's shakin?

Little if you ask me, thanks.

I guess not as much of a rant as i had thought it was, i think it was more me venting about what i felt is the clear problem at the moment with this game.

I had seen icon and version number changes and read or thought very little else, that aside, what is planned for future updates?

Sorry, as a canadian i probably say that too much.  Anyways, to answer your question vagabond, i haven't forgotten about my novella, i just haven't been able to devote the time to it that it deserves, i've been neglectful of alot of things and people lately
Title: Re: Updates for Outpost 2 1.3.8
Post by: Vagabond on November 27, 2018, 07:39:29 PM
Agreed the multiplayer issue is a big and clear problem.

For the next update we have completed:

* Updated NetHelper to version 1.5.3
   - Updated to newer versions of libnatpmp and miniupnp.
   - Cut down cleanup/destruction on application closing from 3 mins to 8 secs.
   - Removed dependencies on msvcr100.dll and msvcp100.dll by statically compiling.
   - Removed deprecated POSIX networking functions.

* Updated op2ext to version 2.0.1
   - Fix bug in Console Mod Loader that separated the executable's path into multiple arguments if the path included a space.

I'm working on 3 projects right now:

 - Adding a logger to op2ext that can be called by modules like NetHelper. Using the std library chrono header for pushing a time and date stamp into the log.
 - Creating a new coop multiplayer scenario. It is about 2/3rds coded but not yet tested. Working with a new C++ programmer on it, so it goes really slowly as I'm teaching as I go. Scary that someone is listening to my programming advice. :|
 - Trying to get OP2MapImager released with bug fixes. Getting the unit tests to work has turned into a slog. This effort is separate from the next Outpost 2 release.

I'm putting a record low amount of time into Outpost 2 right now, so besides that and working on 3 projects progress is really slow.

The other thing I'd like to work on is fixing the old bug in blackbox's Plymouth Cold War scenario. Annoying that it has been broken for something like 10 years? Otherwise we should probably pull it.

Actually, with the 2 bugfixes, we could release a new version any day. I suspect the new NetHelper build will solve a decent number of multiplayer issues, but don't have much data yet. If the new NetHelper compilation works, it might be worth pushing out immediately to fix the multiplayer issue instead of waiting for other development.

If you pick the Novella back up, I'll certainly read.

-Brett
Title: Re: Updates for Outpost 2 1.3.8
Post by: Arklon on December 01, 2018, 01:50:08 PM
The NetHelper update alone is enough to warrant a minor update. The console mod loader bug in 1.3.7 was really annoying, so that bugfix alone would also warrant a minor update. I have some minor updates to NetHelper that I could merge in, but it was mostly just switching all the multithreading to use STL <threads>, and code cleanup which you've duplicated some of yourself anyway, so meh.
Title: Re: Updates for Outpost 2 1.3.8
Post by: Hooman on December 01, 2018, 11:24:27 PM
I agree, both seem worthy of a patch update.
Title: Re: Updates for Outpost 2 1.3.8
Post by: Vagabond on December 02, 2018, 06:06:24 AM
Ok, Give me a day or two to make final updates to the restored subversion repository and do some final tests. Does anyone want to volunteer to test/try to break the release before it goes live?

Hooman, do you want to upload to the website again?

Thanks,
Brett
Title: Re: Updates for Outpost 2 1.3.8
Post by: Hooman on December 02, 2018, 02:26:16 PM
Let me knows when the new package is ready and tested.
Title: Re: Updates for Outpost 2 1.3.8
Post by: Vagabond on December 11, 2018, 09:21:36 PM
Hooman,

Just finished uploading to the SVN repository and testing.

To test, I put Outpost 2 in the directory: C://Users/.../Outpost 2 Test. This way the directory had spaces in it. I then loaded cm1 using the console mod loader and saw that the colors had been updated. This proved the console mod loader was working with spaces in the directory. No annoying popups occured either.

Then I sent the package to someone else and attempted multiplayer. Without touching router configurations or Hamachi or anything else, we were both able to create and see each others' game using TCP/IP. For NetFix, he could see and join my game but I could not see his created game. This was consistent with earlier tests. Not sure why the discrepancy exists. I can send the routers involved if anyone wants the data. Considering I had never been able to play Outpost 2 without Hamachi before this, it seems to be in a much better place.

If you don't mind, it would be good to proof-read the change log and the publishing instructions I just wrote. Also, please test on Linux using Wine to make sure I didn't break any of the compatibility there I cannot test. Besides that unless someone else wants to test, I would like to see it published.

Thanks,
Brett
Title: Re: Updates for Outpost 2 1.3.8
Post by: Arklon on December 11, 2018, 09:51:00 PM
Then I sent the package to someone else and attempted multiplayer. Without touching router configurations or Hamachi or anything else, we were both able to create and see each others' game using TCP/IP. For NetFix, he could see and join my game but I could not see his created game. This was consistent with earlier tests. Not sure why the discrepancy exists. I can send the routers involved if anyone wants the data. Considering I had never been able to play Outpost 2 without Hamachi before this, it seems to be in a much better place.
Issues like that are fairly common with OP2. In fact, I've seen a pattern of behavior like that among lots of older games in particular with the same people, and what they all seem to have in common is they use DirectPlay, which makes me really suspicious. I wonder if there's any good way to look into that.
Title: Re: Updates for Outpost 2 1.3.8
Post by: Hooman on December 16, 2018, 07:05:24 AM
Quote
For NetFix, he could see and join my game but I could not see his created game.
Hmm, is it possible there is a terminology gap on the part of users reporting this problem? As described, it would be quite surprising. For that to happen there would be (multiple?) packets dropped between the clients and the game server when he was hosting. Either the server never saw his game, which means packet drops between him and the server (most likely), or you didn't see the game because of packet drops between you and the server for each subsequent periodic game list update (less likely if you stayed watching the game list for a while). As both connections from client to server are initially outgoing, we're dealing with the easy NAT case here. Even timeout of the mappings doesn't seem likely, since both informing the server of a new game, and searching for new games, is started by outgoing requests from the clients, which would reestablish any mappings.

On the other hand, if that is an accurate description of the problem, that may provide some clues as to what to look at.



I tested the updates on Linux. No strange popups. Game seemed to run normally.
Title: Re: Updates for Outpost 2 1.3.8
Post by: Vagabond on December 17, 2018, 07:56:23 PM
Thanks for testing on Linux.

Maybe I can schedule a time when a third party can attempt to join a game with the 2 of us. This could rule out if it is his sending packets or my receiving packets from NetFix's server. Typically around 9PM Eastern time is when we test if that time generally works for someone else we can pick a date.

We can still both create and play games using the TCP/IP option with the newly compiled NetHelper, so maybe the fallback is people just use NetHelper only instead of NetFix?

I really like the idea of having a sort of paired down SIGS like server so you can see who is creating games. NetFix would fill this nicely if we can get it working well.

Still recommend we push forward with the release. If we keep slow-rolling the release, there might be another small update to the op2ext API to allow properly destroying allocated memory when calling GetCurrentModDir. While incorrect, I don't think it is a big deal and existing mods would have to be recompiled to take advantage of the change anyways. https://github.com/OutpostUniverse/op2ext/pull/9

-Brett
Title: Re: Updates for Outpost 2 1.3.8
Post by: Hooman on December 20, 2018, 11:45:44 AM
I may be lurking on IRC by 9PM or 10PM Eastern time.
Title: Re: Updates for Outpost 2 1.3.8
Post by: Vagabond on January 12, 2019, 07:11:42 AM
Just updated Outpost 2 in the repository to include the newest version of op2ext (2.1.0). Below is the changelog for the new version of 2.1.0. The highlights are the availability of a unified logger for modules, ability to load more than 31 volumes, and improvements to the module interface.

NetFix has not been recompiled to take advantage of the new logger. So with this release, it will still create its own log files separate of the unified log message. We need to get ForcedExport and NetFix itself compiling on VS2017 before NetFix can use the unified logger.

op2ext Version 2.1.0

 * Add message logger usable by op2ext and external modules.
 * Deprecate GetCurrentModDir due to improper memory management across DLL boundaries.
 * Add external API function GetConsoleModDir_s to replace deprecated GetCurrentModDir.
 * Mark argument volName from function AddVolToList argument as const. This allows passing const values into the function.
 * Lift 31 volume load restriction. Outpost 2 will be able to load effectively a limitless number of volumes.

---

Also, I played a 3 player multiplayer game. We couldn't get TCP/IP to work, so we had to switch to NetFix. After one person switched to a different computer, we were all able to join and play. The best troubleshooting steps I have right now is asking someone if the IP address in TCP/IP is showing their internal or external IP address. If it is showing their internal IP address, I have them verify their firewall settings and restart Outpost 2.
Title: Re: Updates for Outpost 2 1.3.8
Post by: Vagabond on February 03, 2019, 07:28:54 PM
Recently I noticed when I attach the debugger to Outpost2 to debug a custom mission, NetFix does not properly load. Occurs both in a debug and release build.

However, when I attach the debugger to debug op2ext itself, NetFix loads properly.

I attach the debugger from the Visual Studio project. So if the project is op2ext, NetFix is fine, if the project is the custom mission, it isn't fine.

My next step to test is to try and bring in the PDB file for op2ext when debugging the scenario. Hopefully I can step through op2ext initializing NetFix after the custom scenario attaches the debugger. If the bug exists in NetFix itself, I won't be able to track it easily since we don't have NetFixClient compiling right now.

I don't think this should delay the next release, but wanted to bring it up.

-Brett
Title: Re: Updates for Outpost 2 1.3.8
Post by: Hooman on February 06, 2019, 02:17:58 AM
I've encountered similar with OllyDbg. In the case of OllyDbg, when I loaded a LevelDLL, it first loaded a DllHost.exe, which was basically just a dummy executable used to create the process and address space to host the DLL being debugged. The problem was, the dummy EXE was at the preferred (and MSVC default) base address used by Outpost2.exe. When the levels made references to Outpost2.exe (as they do to call the exported methods used to interact with the game), it would cause Outpost2.exe to be loaded into the address space. However, the preferred base address was already taken, so it was relocated to another address.

The problem with NetFix, and other OP2Internal (formerly ForcedExports) projects, is they relied on having a known fixed base address for Outpost2.exe. Or rather, they relied on having a fixed relative offset between the Outpost2.exe module's base address and it's own module's base address. The two could be relocated independently. In NetFix, there is a safety check that causes it to abort loading with a failure code if the Outpost2.exe module is not loaded at its expected address.

I'm guessing something similar happened with the debugger you are using.

The workaround I used, was to have the debugger load Outpost2.exe first, and then load the level and debug it that way.

More long term, I'd like to change how OP2Internal works so modules can be independently relocated (which is how Windows works), rather than assume nothing will ever be relocated.