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

Reputation Activity

  1. Vuthakral liked a post in a topic by Samuco in Electron   
    I made a proof-of-concept light mapper
    https://www.youtube.com/watch?v=Z1pv2fsjumM&feature=youtu.be
  2. WaeV liked a post in a topic by Samuco in Electron   
    I managed to fix some of those artefacts
    https://youtu.be/-2WfXJcLa4k
  3. Aer liked a post in a topic by Samuco in Electron   
    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
  4. Aer liked a post in a topic by Samuco in SAPP AI [proof of concept]   
    They just chase the player closest to them. It's pretty basic ai at the moment (run to nearest player), but can be coded to do lots of things. Here's an updated ai that has learned how to shoot:
     


     
    http://youtu.be/Du3RMjtB-PI
  5. rprobot2 liked a post in a topic by Samuco in Netcode Research   
    Myself and 002 have been doing research into the netcode of HaloPC/HaloMD and HaloCE. I figure we should probably try to document things here.
    Preamble by Luigi Auriemma
     
    I'm not going to cover the initial handshake because Luigi already has on his website. 
     
    --------------------------------------------------------------------------------------------------------------------------------
     
    The first (game) packet received by the server looks like the following. This is for both HaloCE, HaloPC and HaloMD
     
    The "ieskdkc" is a random encryption key (useful later). The "bloodgulch" is the map name to be loaded by the client.
     
    ------------------------------------------------------------------------------------------------------------------------------------------------
     
    HaloPC / HaloMD
    The first (game) packet sent by the client looks like the following.
     
     
    Chat Packet
     
    types
    00011110 = all
    10011110 = team   player 10000000 00000000 = 1 00000000 00000001 = 2 10000000 00000001 = 3 00000000 00000010 = 4 ... etc ...   message <letter 1 - 9bits > <unk 7 bits> <letter 2> <unk 8> <letter 3> ...   HaloCE
    The first (game) packet sent by the client looks like the following.
     
    where
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx is the cd hash
    gggggggg is the client token
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa is the md5 check
    Tucker993 is the player name (this was originally tuckers packet!)
     
     
    kk kk kk kk (4 hex bytes) is the map crc32 put through a magical xor with the random encryption key
     
    For example, lets say Bloodgulch has a crc32 of 0x7B309554 If "ieskdkc" is the random encryption key, the four hex bytes are 0x7B ^ 'k' (4th letter) 0x30 ^ 's' (3rd letter) ^ 'c' (7th letter) 0x95 ^ 'e' (2nd letter) ^ 'k' (6th letter) 0x54 ^ 'i' (1st letter) ^ 'd' (5th letter)
     
    which produces a result of 10 20 9b 59
     
    Here are a few more examples (using the crc32 of blood gulch)
    // random encryption key => four checksum bytes
     
    --------------------------------------------------------------------------------------------------------------------------------
     
     
    SkyBridge
    SkyBridge is intended as an MD plugin to translate packets between HaloMD and HaloCE (so MD/PC can join CE servers and CE can join MD/PC servers). So far, with the above knowledge, I have managed to connect to a HaloCE server using HaloMD. HaloMD can successfully join and the CE server starts sending it game information (like other player names, positions etc). HaloMD promptly quits because I haven't translated all of the packets yet
  6. Tucker933 liked a post in a topic by Samuco in The quest for 32 player MD servers   
  7. Tucker933 liked a post in a topic by Samuco in The quest for 32 player MD servers   
    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
     
  8. Vuthakral liked a post in a topic by Samuco in Electron   
    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...

  9. Aer liked a post in a topic by Samuco in Misc CE Development   
    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

  10. Krazychic liked a post in a topic by Samuco in Misc CE Development   
    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.
     
     
  11. Samuco liked a post in a topic by Kavawuvi in Misc CE Development   
    Halo CE's lobby on HaloMD
     

     
    All of the servers are joinable thanks to Samuco's plugin. HaloMD's ui.map has the Internet join game button removed, so I'm using Halo CE's stock ui.map, instead.
     
    Also, this list is generated in less than a couple seconds.
  12. Tucker933 liked a post in a topic by Samuco in Misc CE Development   
    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. 
  13. Tucker933 liked a post in a topic by Samuco in Misc CE Development   
    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. 
  14. WaeV liked a post in a topic by Samuco in Electron   
    I managed to fix some of those artefacts
    https://youtu.be/-2WfXJcLa4k
  15. Krazychic liked a post in a topic by Samuco in Misc CE Development   
    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.
     
     
  16. Krazychic liked a post in a topic by Samuco in Misc CE Development   
    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.
     
     
  17. Krazychic liked a post in a topic by Samuco in Misc CE Development   
    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.
     
     
  18. Krazychic liked a post in a topic by Samuco in Misc CE Development   
    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.
     
     
  19. Krazychic liked a post in a topic by Samuco in Misc CE Development   
    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.
     
     
  20. Krazychic liked a post in a topic by Samuco in Misc CE Development   
    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.
     
     
  21. Krazychic liked a post in a topic by Samuco in Misc CE Development   
    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.
     
     
  22. WaeV liked a post in a topic by Samuco in Vega   
    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

     

  23. WaeV liked a post in a topic by Samuco in Vega   
    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

     

  24. WaeV liked a post in a topic by Samuco in Vega   
    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

     

  25. WaeV liked a post in a topic by Samuco in Vega   
    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