|
Post by magitek on Sept 26, 2011 10:26:37 GMT -5
Pick six or less options!
So I've been working on Hardwar for a couple days and have made some reasonable progress. There's a limit to how much I can get away with editing memory and I'm not clued up with hacking the executable, but I am open to suggestions if someone has an idea for the game that is within my capabilities.
Majority of my work is based on top of UIM06 -> enhanced -> MSGC. It is also completely based around multiplayer, though it's likely many of the things here can be used in singleplayer to some degree.
Things I've more or less completed: Hangars no longer drop your frame rate to 10 in multiplayer and the server is generally more aggressive.
Re-balanced AI moths to provide slightly more challenge and make subsystem damage more important.
Police protection is instant and provide traders with more opportunity to trade and pirates with less. This also means if you are pirating you will clash with police more often.
Police enforcers are no longer dead set on gunning/camping individual pilots/players. They are free-roaming and don't spell the end of your career as a criminal. I intend to have them prioritize targets and escort high value traders.
Altered many spellings and item descriptions in-game so new(?) players can actually understand what is going on: engine1 to Economy engine cell3 to Advanced cell CompComp to Components etc
Things I'm about to work on (no particular order): AI pilots selling to player hangars. Threat prioritization/Life preservation for the AI. Making radar icons more visible in higher resolutions. Reducing repair profits, possibly requiring scrap to make a profit off hangar repairs. (scavengers rejoice!) Smuggling routes and police interception, with possibly non-fatal consequences. (confiscation/disabling your moth etc) Making it more work to reach the end-game by inflating prices of Moths, reducing profit margins and making life in general more difficult for players.
Need assistance with (order of priority): 1. Removing, or preferably, reducing the magical amnesty from killing one pirate or enemy faction member. If I must, I will enforce this with external memory editing at run-time; It's a terribly thought out mechanic that trivializes piracy and danger of doing it. 2. Tapping into the mail message system so I can send players trade opportunities or job offers/threats/fees. 3. Understanding/editing enhanced2: specifically, editing what rating the police will attack at. 4. Reducing repair profit and/or integrating scrap metal into repairs preferably without hovering over memory to enforce it. 5. Understanding how to send 'sound' packets or editing the client so I can have the atmospheric sound back in multiplayer. 6. Modifying LOD distances for moths and anything else using it. We don't need the polygon reduction anymore. 7. Inserting new equipment into Hardwar. (likely beyond merely messing with memory!)
Doesn't look like many people are interested in Hardwar, particularly a decade after conception, but it still holds up pretty well today for many things. I will probably work on it for awhile, at least until I hit a stumbling block..
If anyone wants to contribute or wants to see certain features let me know.
|
|
|
Post by duncan on Sept 26, 2011 13:14:02 GMT -5
Wow, lots of plans.
I looked into the messaging long time ago, wanting to have msgc group single sold items, so that when AI buy from you you do not get 20 times the same message in your inbox. But never continued on it. Located the code in the save game I believe. Need to see if I kept some notes.
One thing we were working some time ago was adding new hangars to the game, there were several issues to deal with, but I believe all is sorted. Unfortunately, never finalised since most capable people moved on. ... but not in your poll ...
|
|
|
Post by magitek on Sept 26, 2011 20:21:48 GMT -5
Wow, lots of plans. I looked into the messaging long time ago, wanting to have msgc group single sold items, so that when AI buy from you you do not get 20 times the same message in your inbox. But never continued on it. Located the code in the save game I believe. Need to see if I kept some notes. I only just realized some of the message data was exposed in the pilot list a few minutes ago.. sometimes you can't see the forest.. ..hopefully I will be able to twist this to an interesting degree at some point. Assuming everything is exposed there I can manage, but if you do have any data on it I'd be keen. I'd really like to get singleplayer trade offers and things going; makes the world feel more atmospheric and active. One thing we were working some time ago was adding new hangars to the game, there were several issues to deal with, but I believe all is sorted. Unfortunately, never finalised since most capable people moved on. ... but not in your poll ... I've put some thought into hangars (obviously not at the time I was writing the poll ..slipped my mind.. can't edit the poll either.), I had just assumed they wouldn't be too difficult to tweak because of their relatively static nature. If you have any information about adding hangars I should know, at minimum I'd like to add a few randomized locations. On a related note, I was thinking about letting AI open new business hangars themselves (competitive practices), though I'm not positive it'd work without me managing everything in memory for their trade duties. Judging from the poll, it looks like you pretty much prioritize my main objectives, the only thing I will probably never be able to do anything about is the AI refusing to fight in tunnels, and even if it could, it is probably damned to trying to circle you even if there is no space.. what I may have to do is remove/reduce the players abilities to fight there. To be perfectly honest the bogus tunnel AI is really the only thing that brings down Hardwar in my opinion. Everything else is reasonable to some degree (even the combat AI).. I couldn't really stand the latch-on enforcers but all the tunnel problems suck (AI cant pick up/AI can't fight back/AI won't pursue you/AI slow to move through). At the moment I'm rewiring the q-buster to detect problem moths and forcefully move them along. I have the feeling I will need to clear up these issues in MSGC before doing anything serious.
|
|
|
Post by duncan on Sept 27, 2011 2:24:35 GMT -5
btw - msgc was developed for uim6 without enhanced, you would be the first to test them together i think. for adding new hangars long time the problem was it crashed the game. the first thing that worked well was to convert non-hangar models into hangars. this was restricted to the maps grid, could not remove a hangar from mines and add it in riverside for example. the root cause for that particular problem was identified as the downtown-reservoir tunnel. which was opened up by SR in the patches by removing a few polygons of the terrain models with sealed tunnel ends (one in downtown, the other in riverside). meaning, the removal of those ends is hardcoded, the code counts the number of models placed, knows which model numbers are the ones which need tunnel capping polygons removed. if the models shifted in the list by adding some building, the proper reference was lost and often caused crash, and sometimes holes in a crater wall segment Max made the process indepentent of the counting of placed models, but i dont know how exactly, it is actually in enhanced but i am not sure if that is the generally used version. Alternatively, it is possible to replace the models with capped tunnel ends with ones that have them removed already, I have those somewhere already made. And then just break the code that is meant to open them up. I dont know where to find the code in the exe. With that fixed it is possible to add new models to the world at will. Then there is enhanced or enhanced2 that give a role to a building with an init file. Actually, we already have a world editor, 'addmove' by wez. He also created some altered worlds, e.g. spiced up mines. I even added a whole new crater (a copy of gamma), just the mesh, it was not 'functional'. But the next problem is with filesize of hardwar.wld and/or hardwar.wxp (which contain the data for placing the models in the world and the model meshes). Adding new models increases the filesize. I could only add a few new models to hardwar.wxp before it would crash or not take the model, i guess the file would take more space than reserved in memory.
|
|
|
Post by magitek on Sept 30, 2011 6:59:29 GMT -5
Bit of a status update for anyone (the whole 3 of you?) interested.
I haven't really made any in-game progress sadly, I've spent the past few days porting MSGC to C++, fixing all the remaining bugs, adding memory checks and debug functions to reduce the crashing introduced from using MSGC. I'm just about done purging it and am thinking about working on smuggling code, depending on how stable I can get it.
I can't seem to get my hands on the police respawning code unfortunately so I'm not sure if I should give attack orders to the police individually or what.
As for the actual smuggling, my initial thoughts on how it would be in-game(and assuming the mail function will let me do as I please):
First you will receive a mail about smuggling runs on a reasonably regular basis, the frequency of these opportunies will be based around your reputation with dealers and police. Scavengers are most likely to receive these jobs due to their typically lower profile.
Smuggling run The initial mails you receive will roughly detail the following: Job payment. Requirements. (small pod/large pod/afterburner etc) Pick-up location of cargo. Potential dangers associated with this run. Instructions should you choose to accept.
In order to accept, you will have to fly to the hangar/pickup they designate (largely random) and purchase the cargo yourself, this is basically the insurance should you fail the delivery. You will not know the destination until you have paid the insurance.
Once you have the goods, you will receive a new mail detailing: Drop off locations. Safe house hangars you can dock with. Possible safe or particularly dangerous routes to be mindful of. The likelihood you will encounter rival business partners. Your time-limit for delivery.
After this, it is up to the players ability to get from point A to B without brushing too close to the police or rival corporations.
During this time the server will be actively assigning police to impede your progress. This is mostly in the form of roadblocks and police outside normal patrol zones, looking for your cargo. The police will not know you are the carrier unless you stray too closely, and if that happens:
You can jettison the cargo. The police will let you off with a warning, however in doing so you will obviously lose both the insurance you paid and some reputation with the smugglers.
You can run. Should you actively put distance between yourself and the first police cruiser that messages you, they will assume you are running and will attempt to disable you. You can still jettison the cargo but may be required to pay a fine within 24 hours. If you continue to run multiple police units will be assigned to directly impede you to the destination.
You can fight. In the event you have a gang in cahoots with your chosen profession, you can probably just pulverize all the police and their support. Doing so is not really in your interests of your employer and may reduce your prospects of future smuggling runs. If you destroy the cruiser before a second arrives, you may still continue the run without police support being actively routed however.
You can hide. Should you escape immediate pursuit, you can pull into certain hangars and wait for the police to pass by. In doing so the police will lose their direct lock on your moth.. A mail will arrive when it is safe to continue. However, if you enter a safe house while police are too close, the police may enter the hangar and arrest/fine/kill you right there. There is also potential for switching your moth to prevent the police actively searching for you.
The destination: Should you arrive at the destination within the time-limit with the package, you will either be required to dock with their hangar and offload the cargo or jettison it in the location specified. You will then be mailed and receive your payment, you may receive more or less based on your performance. You will likely receive the most if you avoid all police contacts and destroy all rivals. It is also possible you will lose your wanted status you acquired during your run (assuming you didn't destroy any police).
Circumstances: Sometimes things don't go right, mostly these will be.. Police sweeps, sometimes police will be in odd locations, sometimes they may be equipped with stealth to evade radar detection. Rival dealers/factions will outright destroy you on sight, and you often won't know who they are until they are firing missiles. Ambushes waiting from either side of the law. These can feature multiple enemies. On occasion the drop location will be guarded by enemies, when this happens you may have to drop the goods under fire or you may be mailed a new dropoff point.
You may or may not see these in any single given run, usually higher profit margins entail more dangerous factors. All elements are randomized.
Notes: I'm still a long way from achieving anything like this. Most of which is written here should be possible given what I can gather from memory, whether it is stable enough or just how much flexibility I can wrench out of the AI is another question.
If anyone has anything to add or want to see, let me know. It's all just a work in progress.
|
|
|
Post by riedquat on Sept 30, 2011 10:20:07 GMT -5
Bit of a status update for anyone (the whole 3 of you?) interested. There are more than 3 of us, most of the current population are actively or passively lurking; we are a lurking community Seriously!
|
|
|
Post by magitek on Sept 30, 2011 10:27:27 GMT -5
Mail system:
Straight from the chained PILOT_MESSAGES (+136)
1st value - Read/new mail indicator 2nd value - Setting this to zero seems to hide the sender. 3rd value - Sender's memory address, may be building only. 4th value - Message type x2007 "Your attack" x2009 "Relentless attack" x2010 "Record cleared"/"Reward paid"(if %x > 0) x2019 "Calling traders" %x goods at %targetsubject 5th value - Day message was sent 6th value - Time 7th value - target subject 8th value - %x value to be inserted into message (Police mail: 0 = we keep your reward and drop aggression or, if value 1+ it becomes a reward mail) 9th value - Next mail address 10th value - Previous mail address
Looks pretty easy to manipulate, mainly thanks to the terrible efficiency of the game sending whole strings each and every frame. My main problem now is actually spawning a message..
|
|
|
Post by duncan on Sept 30, 2011 12:00:53 GMT -5
Good you found it. Wasn't able to find my notes unfortunately. The section directly following the mail system is the trade system, if I remember correctly.
What flap did in MSGC for pilots (which also are in a chained list) is to cut into into the chained list (chained by the previous/next address). There is an offset to the first pilot in the list. And there are plenty dead pilots to recycle to create a new pilot.
Perhaps something similar can be done for the message system, recycle some obsolete messages.
How does the message system keep messages for different players in multiplayer apart? Or was it that the offset to the messages are in the pilot code (it is slowly coming back). You could transfer obsolete messages to a created pilot (for example the 'ghost' MSGC creates) for safekeeping until needed.
|
|
|
Post by magitek on Sept 30, 2011 21:53:00 GMT -5
What flap did in MSGC for pilots (which also are in a chained list) is to cut into into the chained list (chained by the previous/next address). There is an offset to the first pilot in the list. And there are plenty dead pilots to recycle to create a new pilot. Yeah I had intended on using this system, problem is, there really aren't many messages to recycle; I've thought about flagging the player criminal a few times or something in order to generate some but I don't really like the idea. How does the message system keep messages for different players in multiplayer apart? Or was it that the offset to the messages are in the pilot code (it is slowly coming back). You could transfer obsolete messages to a created pilot (for example the 'ghost' MSGC creates) for safekeeping until needed. It is just a chained list in any pilot's memory (the offset you refer to); each pilot keeps his own list in memory, which is dynamically allocated each time a message is added. I could probably just fudge some and add them to the list if I could find some memory that wouldn't get overwritten. edit: The section directly following the mail system is the trade system, if I remember correctly. What did you mean by this exactly?
|
|
|
Post by duncan on Oct 1, 2011 6:18:17 GMT -5
I assumed you looked at the savegame file, but you didnt, so I may be confusing. At least I confused myself.
In the savegame file (which is sort of a memory dump) you can find back several data classes, grouped per object. Hangars are easy to spot and also pilots. Directly following the pilot code, but preceded by some monorail text strings, there are two lists, one for sure is a list of all goods for sale at hangars, and possibly goods requested. The other list is/could be the messages.
edit: Not sure though, I will have a peek for if I am telling complete rubbish
edit2: just checked, both those lists I was talking about are very similar, but not identical. Many lines, but not all are exact copies except for one value. So both seem trade lists.
|
|
|
Post by duncan on Oct 1, 2011 6:40:59 GMT -5
Actually found some notes on the tradng messages:
Num bytes - Value/Function guess 4 0x00 4 0x01 4 Building ID 4 Sales/Needs - 0/1 4 0x0A or Building ID of trading post or faction HQ 4 observed 1/2/3/5 4 0x01 / 0x10 / 0x0C 4 ?only 5 different values 4 item ID 4 quantity
edit: modified
|
|
|
Post by Pilot on Oct 1, 2011 7:16:01 GMT -5
4 observed 1/2/3/5 - 3 faction HQ, 5 trade post I would assume one value would be for garbled messages another for bob, and would laz hightower be lumped with faction hq messages?
|
|
|
Post by magitek on Oct 1, 2011 7:56:07 GMT -5
I assumed you looked at the savegame file, but you didnt, so I may be confusing. At least I confused myself. In the savegame file (which is sort of a memory dump) you can find back several data classes, grouped per object. Hangars are easy to spot and also pilots. Directly following the pilot code, but preceded by some monorail text strings, there are two lists, one for sure is a list of all goods for sale at hangars, and possibly goods requested. The other list is/could be the messages. edit: Not sure though, I will have a peek for if I am telling complete rubbish edit2: just checked, both those lists I was talking about are very similar, but not identical. Many lines, but not all are exact copies except for one value. So both seem trade lists. I am pretty much purely looking through memory with ollyDBG, I did take a quick look at the save files so I could figure out how to spawn the pretty lights at sundown from singleplayer to put them into multiplayer but I haven't figured those out yet. Thanks for the notes on trading, Now I just have to dig through memory to find em.. On a side note, I can't believe how often the AI gets stuck in this. I wrote a data collection system on players/pilots/buildings so I could quickly do things without pulling even more from memory, while I was there I decided I would try and fix AI getting stuck once and for all. The Qbuster isn't good enough by itself; there's a flaw (oh, really?) with the AI when it is already at the destination building and permanently loops its orders, even ramming it may not be enough at times. It will loop between the autopilot and go to building commands every frame. If you clear these commands, it will simply try to do the same thing, if you tell it to queue.. same thing (guess it relies on the autopilot). So now I have a function which checks every pilots position, if it doesn't move for 3 seconds, and has a command where it should be moving and isn't.. I throw a random flypos command at it. If it's not moving in 5 seconds, I teleport the damn thing slightly upward(seems to work well so far)... though I haven't written any ceiling protection haha. It's likely I will have to make a safe location teleport for any further disruption. I'm hoping this will be 100% the end of the AI getting stuck for little to no reason... but it still may require more work. Like reading the crater data file for collision, so I can go about guidance intelligently. I will probably take a look at the trading system shortly, in attempt to forget the issue with creating new messages
|
|
|
Post by magitek on Oct 1, 2011 8:45:42 GMT -5
"Make player hired thugs easy to use/smarter" - Can anyone outline the problems with thugs? I have _never_ used any (looked like some serious work to setup). What could be done to improve these guys?
|
|
|
Post by riedquat on Oct 4, 2011 12:43:12 GMT -5
"Make player hired thugs easy to use/smarter" - Can anyone outline the problems with thugs? I have _never_ used any (looked like some serious work to setup). What could be done to improve these guys? They are stupid! lol They are normal ai I guess, but when they die using a full equipped police moth of yours with a pod full of gems for a freaking miss-shot or because the thug decided to charge his 50% full cell in the middle of a military campaign going on around that lightwell it is infuriating... add to that what it takes dealing with thugs, first you need to use the console to order them anything from boarding a moth to going to certain place, including cancelling orders mid-flight because the ass hole got stuck against a damn wall... order,niptuc,board,1 order,niptuc,go,prison mine order,niptuc,disembark order,niptuc,board,3 order,niptuc,go,downtown 05These are the basics to get one of your thugs board a moth and go to prison mine and return, when you make him disembark is to you board his moth and make the purchase yourself, they are able to sell but unable to buy; and then order him to return to your hangar.. (so you can be a wing of your thugs... and pray if something goes wrong you are not so unlucky to hit him twice in the case of a dogfight, if you do he will attack you back!) If you lose visual contact with one of them you can ask them his status... order,niptuc,status (or is exec?) There are 50 % chances he is standing inside your hangar or standing in limbo... and your moth and its cargo gone... Or perhaps he is in the middle of laser turret dogfight or got stuck (again!) or about to get, bumping against the monorail every time he tries to reach a position node; and you as a player with your great wisdom try to clear his orders, but life isn't easy, you are in the middle of another dogfight yourself while losing control of your moth and typing in the console: exec,niptuc,clearand getting in return almost at the same time the forth firebust reach your tail: does not compute I'm exaggerating it a bit, but they are very annoying! First time I use a thug was in one of the Betas, got myself a moon-moth and made the thug the pilot, i ordered him to go somewhere using it as a taxi... we launched from dt 05... ten seconds later we got stuck against dt 05 front wall.... stuck there for all eternity... Did I mention I hate thugs? ;D
|
|