A Community discussion forum for Halo Custom Edition, Halo 2 Vista, Portal and Halo Machinima

Home  Search Register  Login Member ListRecent Posts
  
 
»Forums Index »Halo Custom Edition (Bungie/Gearbox) »Halo CE General Discussion »Sparky's Thread

Author Topic: Sparky's Thread (11 messages, Page 1 of 1)
Moderators: Dennis

sparky
Joined: Jun 27, 2009

Dismissal of Truth leaves one to believe lies


Posted: Apr 15, 2019 07:31 PM    Msg. 1 of 11       
I like testing limits and constructing designs that eliminate extents.

It's often simple to test limits. I've done so in many situations, such as with Altimit01's Eschaton, prompting him to make version 0.8.1. I tested limits with SAPP, and who hasn't tested limits with the HEK, and many of us have messed around with Halo's runtime memory. I also used to make lots of different maps for Halo Demo PPC Mac and Halo MD and Custom Edition -- I stopped counting at 50 -- to experiment with different gameplay. I tested server configurations, etc. etc. etc. Fun times. I spent years gathering ideas from a wide variety of games, single player, multi player, etc., and I gained experience setting up and managing servers, using different operating systems, looking at a variety of software, gaining ideas, designing web sites, messing around with various scripting and programming languages, and so on. (I'm simply glossing over this.) And I've done so many different things with Halo, much more than most people, and I have for the most part enjoyed sharing some of my work.

I have no qualms with high workloads. And when a pattern has been established, there's a regex sequence and a "for loop" for that.

Now I am pondering how I might design a new game engine. Instead of mentioning what I've already learned and what improvements I would want to make beyond what Halo and contemporary games typically offer (which would take too long), I'd simply like to say that I have in mind using C and the very same OpenGL the bridge to which Apple has chosen to burn.

Now I didn't like GitHub when I was using it, and this forum does not perfectly display code blocks, so I'm kind of left with Pastebin or hosting plain text files on one of my web servers to show source code. I know, I know, there are alternatives. Whatever.

So there are a few things I'd like to do first, before I dive into discussing topics like C structs and kernel drivers. At the moment, I'm transferring files around, off of floppy disks onto some 4TB drives... and this will all take some time. I'm not proposing a timetable for progress (as usual), I simply want to present some thoughts to you all, for discussion. You know some of what I've talked about in the past, and you've probably already seen or heard of some of what I've done, especially if you were in my various Discord servers in the past. Nevertheless, I'm going to consider irrelevant whatever experience and perspective you think I have and simply present some ideas for (additional) discussion.

Programming Language and Memory Handling

I have tried to do everything in C when I could, and to design interfaces using Objective-C for Mac and C# for Windows. Of course, there's GTK or whatever for Linux, but I've only focused on web page interfaces on Linux so far.

OpenGL is in C.

I kind of dislike C++. It's too much for me. I'll leave it at that.

MacSoft's port of Halo PPC Mac was of course a Carbon application, even with the Universal Binary version (I guess, nil or Samuco or 002 could correct me if they want). Samuco did his OpenGL injections or whatever with his HaloMD plug-ins. That was weird. Anyway... I have no interest in DirectX at this time.

And there are weird alterations that Halo does with things, like I mentioned in another thread how it inverts the CRC32 result.

All of these things hint at a path that is saying, "Go back and put all the Halo file data structures into C structures, including all the work from retribution.h, and then rethink the necessity of tag files for flexibility; consider filesystems like squashfs or others with sparse file support; using a (relational) database has been a shoddy approach... and load all the data into RAM all at once."

Halo was designed for low-memory systems and uses static address pointers. Blam is a work of art, but let's re-think the approach given modern hardware. We no longer have to fear thrashing the hard drive since many people nowadays have PCs that use 1TB SSD drives and at least 16GB of RAM.

Networking

I remember that years ago, nil commented that Halo spams UDP packets. Halo was designed for 56k connections, as you know, limiting that to 4 players per multiplayer game. And its same-system split-screen co-op mode has up to 2 players, and its same-system split-screen multiplayer mode has up to 4 players; it supports at most 16 players per game server instance.

You can have millions of simultaneous connections to a computer. And if you're using a single IP address, and you want to be super-duper conservative about the whole thing, you can of course have tens of thousands of simultaneous connections. Something's got to improve.

UDP spamming is debatable. UDP vs RDP vs TCP is debatable. There is plenty of room to discuss scalability and proper programming strategies.

Halo 2 doesn't have the ping lead issues that Halo 1 has. It has been advised to never trust the client; does Halo 2?

Don't even get me started on the absurd overhead of GameSpy. At least some people have hacked into the game some kind of IPv6 support.

Conclusion

Looking at the assembly, I wouldn't want to touch Halo's source code. They did what they could, using the technology they had at the time, and it was pretty impressive for ca. 2000, right?

Optimization is a consideration, but I'll leave it at that for now. Let me know what you guys think. I haven't even begun discussing physics calculations or other fun math things. Eventually, perhaps... And there are several differences between Halo 1, Halo 2, and newer versions of the game engine.

I haven't been around for half-a-year, and I'm still doing various things. Someone asked in another thread and in a PM, and I was transferring files anyway, so I'll put some info here later about a new mirror of files from the Halo Maps Archive.

Edited by sparky on Apr 15, 2019 at 07:36 PM


Spartan314
Joined: Aug 21, 2010

Former biped rigger & FP animator


Posted: Apr 17, 2019 05:09 AM    Msg. 2 of 11       
I don't know what it is. But every time I start reading one of your posts I fall asleep halfway through.


hondros
Joined: Apr 17, 2019


Posted: Apr 17, 2019 03:51 PM    Msg. 3 of 11       
So what exactly are you aiming to do here? Honestly it sounds like it might just be easier to write a brand new engine that can run the Halo CE maps.


sparky
Joined: Jun 27, 2009

Dismissal of Truth leaves one to believe lies


Posted: Apr 18, 2019 01:42 PM    Msg. 4 of 11       
Quote: --- Original message by: hondros
write a brand new engine that can run the Halo CE maps.


That's it.

My first step is to go through the tag metadata in a once-over conversion to usable C code. I'll share that and it can be a reference.
Then I think more about whether a tag system is really the best idea nowadays.
Then I figure out what kind of metadata I want to keep and what should be reorganized.
Then I'm going to skip forward to the networking concepts, to make it so lead is not necessary and responsiveness with actions is acceptable. [Thoughts along the lines of, "Maybe UDP is possible if it's merely the client sending a packet to request an action and the server sending back a packet to say it's OK."] And I want to find out how Halo 2 does it; if it trusts the client to an extent but uses some private hashing communication with the server to validate the result.

All of the technical stuff I plan to do myself, but I want to invite you all to help decide what kinds of behaviors and features there should be. I invite you all to basically decide what metadata fields should be added to tags. [EDIT: I'm looking for suggestions like those given in the past, such as ragdoll physics, but also additions to types of information stored in the files beyond what Halo 1 includes. Do you have any ideas on how to give AI less cookie-cutter movements and behavior responses?] I'll also look at what Open Sauce added. In that regard, I want the game engine to be in open public development.

I've also had an idea for how to earn income, since I've been looking at old shareware software recently. My idea is that the game engine and resulting game would be free as community-developed (again, you all could help with the ideas and I would do the coding), but to make an "online account" for multiplayer (connecting to the server) would require a one-time registration fee. Something like $1 to help keep the servers running. You would play single player for free and when you want to make a multiplayer account, you get assigned a number by the server (saved to your user preferences file), and that number identifies your account to the server so you can log in. Other functionality with logging into the web site would be similar to common practice. The file with the number simply becomes your user ID hash, kind of like CD key hash, but limited to one per player account, not per game installation. Let me know how that sounds. [EDIT: Using a local file or ID is unnecessary.]
Edited by sparky on Apr 19, 2019 at 09:10 AM


Oskarmandude
Joined: Mar 16, 2013

Make Halomaps Fully Hectic Again


Posted: Apr 18, 2019 02:22 PM    Msg. 5 of 11       
So what is it you want to talk about, doesn't even have to be an executive summary just literally what


sparky
Joined: Jun 27, 2009

Dismissal of Truth leaves one to believe lies


Posted: Apr 19, 2019 08:55 AM    Msg. 6 of 11       
How would you change Halo 1 to improve it and give content authors more creative potential?

[EDIT: I've asked this in the past, and I'll check to see if my thread is still online or if I need to dig it up from my archives.]

Blam was not designed to give users of The Internet creative potential. It was designed for Bungie based upon Bungie's creative experience with their older game engines like that used with Marathon, which had "2.5-D space".

The game engine I am thinking to design is to give you creative potential. That's why I ask you, based upon your creative experience with various versions of Halo, and with Blam! and the HEK.

Nobody asked you for ideas when they made the HEK and released it for you to use.
Compare that to Open Sauce which is open source. Open Sauce is a hack, not a complete game engine.
Compare that to me, who is planning to do the work, but is asking you what ideas you want for a new game engine.

I'm not remaking the Halo game engine by its logic, I'm using perhaps the same kinds of metadata for behavior creative potential, and that's the question: how would you change or add to the creative potential you already have with the HEK? I mean besides removing fixed limits like with file size.
Edited by sparky on Apr 19, 2019 at 09:00 AM


lolslayer
Joined: Mar 21, 2015

https://www.youtube.com/watch?v=uMHbAKvPJkU


Posted: Apr 19, 2019 07:26 PM    Msg. 7 of 11       
Making a new engine that plays CE maps is very ambitious, but I'm interested to see how far you can get with it
Edited by lolslayer on Apr 19, 2019 at 07:26 PM


DeadHamster
Joined: Jun 8, 2014


Posted: Apr 20, 2019 06:47 PM    Msg. 8 of 11       
If you want to do something with the Halo engine that makes money, write an external program that plays alongside OpenSauce to sync AI from host to client.

I'll give you money for that, and that's something you might actually do.

I have no interest in paying you a dollar so I can play almost-Halo PC online when you finish it 12 years from now.


sparky
Joined: Jun 27, 2009

Dismissal of Truth leaves one to believe lies


Posted: Apr 21, 2019 09:12 AM    Msg. 9 of 11       
Happy Easter!
Relevant quote:
"The reason The Father loves me is because I lay down my life and take it back up again. No one takes it from me, but I lay it down deliberately. I have authority to lay it down and authority to take it back up again. This command I received from my Father." (John 10:17-18).

Quote: --- Original message by: DeadHamster
write an external program that plays alongside


I've kind of already done that with the stock game, but with device control states. And it lags even on localhost, which is why I would want to have such synchronization built into a new game engine, so I can fine-tune things like that so they don't appear asynchronous.

Example from three years ago.

Here's a list of about 700 game engines, two-thirds of which are said to be "released" (completed?). https://www.moddb.com/engines/top

I'd want to import the Halo files for use.


Oskarmandude
Joined: Mar 16, 2013

Make Halomaps Fully Hectic Again


Posted: Apr 25, 2019 02:15 PM    Msg. 10 of 11       
Sparky your channel is some high art


sparky
Joined: Jun 27, 2009

Dismissal of Truth leaves one to believe lies


Posted: Apr 25, 2019 03:21 PM    Msg. 11 of 11       


Edited by sparky on Apr 25, 2019 at 11:09 PM

 

 
Previous Older Thread    Next newer Thread







Time: Fri May 24, 2019 6:04 AM 235 ms.
A Halo Maps Website