Welcome to Open Carnage

A resource for Halo 1 modding and tech, with unique means of rewarding individual content creation and support. Have a wander to see why we're worth the time! EST. 2012

Samuco

Member
  • Content count

    164
  • Joined

  • Last visited

  • Raffle Tickets

    0

Everything posted by Samuco

  1. I have developed a proof-of-concept 'netcode translator' that enables players on HaloPC or HaloMD to play on HaloCE servers. I still have a couple of bugs to iron out, but I envision that all of the lobbies could be merged at some point.
  2. I have (stupidly) embarked on a quest to raise the maximum player limit of Halo MD and I'll use this forum to document my progress. It might help someone with a similar aim, or someone may know something that will help me. Machine Table ([0x8068600] + 0xaa0) This table stores pointers to machine structures which contain IP addresses and other goodies. All offsets are hardcoded into assembly and those 01 01 00 00 bytes cannot be overridden. Instead, I moved them (and corrected the offsets in assembly). This allows more than 16 connections. Game Table (0x477580) This structure contains the game name, map name, game type, player names and player hashes (amongst other things) I moved the [... stuff ...] [player encryption keys (0x60*16)] further down, which means that the player names have more room to expand. I also increased the player names and hash slots. Mystery Table 1 (0x413224) client update queue server update queue Network Table (0x4655A0) Look, more slots and junk after them which makes resizing difficult. Contains the game password, "message in a bot" (note the similarity to the netcode!), player names, player numbers etc. Resized to Player Table (0x402AAF90 or [0x45E5A8]) Resized from 16 to 32 slots Player Number Checks Oh my god there are so many of these. Everywhere! ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Progress Here is essentially what happens when Player 17 joins Client joins the game with 16 players Server says… Hey buddy welcome, you're player 17! Client says.. Nice! my name is Bob and im player 17 Server says… Hi Bob! here are the names of the 17 players in the game Client says… Wtf 17 players??? -disconnects- All of the other clients promptly disconnect when they are informed player 17 joined. Previously, they didn't quit (and sv_players showed all 17 players), but Player 17 didn't get a body. The server doesn't crash when Player 17 joins. I suspect when the clients receive a player number >= 0x10 they disconnect because there is another player check somewhere. Okay, clients are no longer randomly disconnecting when player 17 joins. I can confirm that player 17 gets a player object (in the player table). However, the server then stops working and displays a "network connection lost" message It looks like the "aa 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" packet overflowed Few packets down. Added a Mystery Table and client/server queues. Player17 now shows up in the \query, gets an actual player and a few other other goodies. Clients are now suiciding on one of the update packets I've found a pretty amazing structure that explains all of the packets
  3. I have been working on a plugin for HaloMD (sorry PC folks!) that lets me run Electron deferred shaders within Halo. Here's the scree-space reflection shader running within MD. The pipeline needs more work, but this shows that it is certainly possible. Added un-optimized SSAO and improved reflection
  4. The bugs have been ironed out and now the bridge is completely working. The next step is to merge the HaloCE/HaloPC/HaloMD lobby and handle the map downloading code in an MD plugin. The PC version should follow pretty closely.
  5. Electron is a new renderer built on top of 002s Proton rebuilder. It has been written from scratch in C++ and runs on both Mac and Windows. The Windows version is compiled natively in Visual Studio and not some crappy attempt to port Objective-C. Various sub-projects are being build using Electron as a base, including: Electron Map Editor for Mac Electron Map Editor for Windows Electron MD Plugin (replaces Halos renderer which doesn't work on Intel Integrated Graphics) for now, here's a teaser...
  6. I made a proof-of-concept light mapper https://www.youtube.com/watch?v=Z1pv2fsjumM&feature=youtu.be
  7. Eschaton does not work on OS X Sierra so I started working on a tag editor that will eventually be merged with the Mac version of Electron. It's called Vega. The majority of the backend code is compatible with Windows so someone can port it if they wish. Vega uses .ent plugins (just like Eschaton) so any improvements to those will also be accessible to Eschaton. Planned Features Bitmap (bitm) Drag and drop images onto Vega to replace / create a new bitmap tag Model (mod2) 3D Model viewer (with textures, shaders, coll wireframe) Drag and drop models (.obj) onto Vega to replace / create new model tags [with coll support eventually added] Scenario (scnr) Electron General Modify tag attributes Duplicate, delete and rename tags Copy and paste tags across different maps Merge duplicate tags Add and delete reflexives Teaser
  8. The reflections can be applied to literally everything. I just need to properly decode the object shaders within Halo and include them in the deferred pipeline.
  9. Reflections... essentially free (0 performance loss) SSAO... not free. It dropped my 60fps to 40 fps However, I didn't use the proper process (downscale, blur, upscale etc) as in Electron, mainly because I wanted to see if it actually worked first. When optimised it becomes essentially free. I'm also running on an old laptop, but > 60fps should still be easily achievable.
  10. I wouldn't consider anything less than 16 GB, but I prefer 32 GB.
  11. I managed to fix some of those artefacts https://youtu.be/-2WfXJcLa4k
  12. I have been working on an updated deferred pipeline and the Screen-space reflections have been substantially improved. Fog is broken at present (and anything that isn't the senv tag is *not* reflected yet simply because I haven't updated the shaders to the new pipeline). You get a movie this time (rather than conveniently angled screenshots) to see how sweet this is. There are a few artifacts but mainly because I'm running the shader in low quality to maintain 60fps on my old laptop. There is no noticeable drop in fps when reflections are activated. https://youtu.be/Pz0o2ZbpgSo https://youtu.be/jSzYsgkdzvo
  13. Oh I made another video anyway with bigger text The plugin is more stable now
  14. Sigh, YouTube ruined the quality
  15. The net code only transmits a control mask (i.e. whether the forward key is down or not). It doesn't contain a field for acceleration. A field *could* be added, but you'd need to update every single server and client...
  16. If I can figure out how to make Halo render its normal vectors then I could put screen-space reflections in-game. I have figured out how to override Halos shaders with my own GLSL ones (to render normal vectors or water reflections etc). Unfortunately, I have no idea how the they store the model view and projection matrices. I suspect it's in the shader program environment parameters but there are like 100 of them
  17. Sure I just own neither and don't have Windows
  18. Using some magic I've gotten the basics of SSAO working inside Halo
  19. I've been messing around with screen space reflections. Obviously these pictures are taken completely out of context (my attempt at a shader is completely broken and looks terrible most of the time) but I thought these looked pretty.
  20. Have you ever wondered what Halo would look like with SSAO? Wonder no more! http://www.samuco.net/halo/SSAO.mov
  21. The betas are super buggy *on Windows
  22. I would have gotten away with it if it wasn't for you meddling kids.
  23. I'm personally voting for Trump
  24. For the games that I play, it's easier to just use an automatic matchmaking service. Not to mention basically everyone here lives on the other side of the planet and in a flipped timezone.