ElDewrito: The Future of the Mod, And our Involvement with 343 on MCC PC.

Note: It’s been 10 months since our last blog post. The purpose of this post is to clear some confusion, correct some incorrect information floating around regarding ElDewrito, and update everyone on what we’ve been doing since last April. It’s been a roller-coaster of events since then. There are some things I can not speak about, such as features or scope of MCC that have not already been publicly announced/discussed by 343, but I’ve been granted permission to speak about certain things, including any meetings that took place that were not under NDA. But first….

Some Thanks Are in Order

There are so many people who’ve helped the team along the way to make ElDewrito what it is today. As of the time of writing of this post, ElDewrito players have played over 1 million games since 0.6′s launch; 1,101,115 games to be exact. We have been humbled by the support of the players, the creativity of the forgers who have made amazing maps, and the hosters who have kept a steady supply of ElDewrito servers to play on. 

  • Thanks to the previous ElDewrito devs who are no longer active. The groundwork you layed out gave us the means opportunity to deliver 0.6 successfully.
  • The server hosts who volunteer their own hardware to keep plenty of ED servers up. The ElDewrito team does not host a single server - All are ran by you, the community. An extra special thanks to those that are hosting the ranked and social servers. 
  • Thanks to all of the 0.6 testers. Over 3000 full-lobby test games were played prior to the launch of 0.6, and without this extensive testing, 0.6 could have been 0.5 all over again. 
  • The forge map makers who put in countless hours recreating maps as well as designing completely original maps. We’ve been extremely impressed with the creativity this community has. 

Despite the posts saying goodbye to ElDewrito and the thanks we are giving out, do not be mistaken; the mod is not dead, nor is it inactive or going away. In fact, it’s the most popular it has been in many many months. Within the reddit post, I have made a comment regarding some statistics detailing the million+ games played.

Our Involvement with 343

On April 24, four days after we released 0.6, the few of the more active members of the ElDewrito team met with certain 343 employees and other members of the Halo Universe, including Frank O’ Conner, the Halo Franchise Development Director.  Our initial meeting, which was not under NDA and therefor did not touch on the topic of MCC at all, was about ElDewrito and a simple request that we pause development. After the success of our 0.6 release, where we had 12,000 concurrent players, they were professional, impressed, congratulatory, and even sympathetic and apologetic about the unfortunate circumstances surrounding Microsoft issuing DMCA takedowns against Halo Online and Twitch Streamers. They publicly released this statement:

“One thing remains clear – the community really wants more Halo on PC. As we look ahead, we’re very excited about the prospects of an official classic Halo experience making its way to PC and we hope to be able to partner with the ElDewrito team and broader mod and content creation community to help inform the types of experiences and features our fans desire. While we have nothing to announce today, please know that the PC community is very important to us and top of mind as we work towards the future. “

They mentioned to us that our success with ElDewrito lit a spark and we were told it “gave us a kick in the pants”. MCC has obviously always been planned to eventually be on PC, but was never on the current roadmap. So while ElDewrito is not responsible for MCC coming to PC, it is responsible for it coming to PC right now. So for that, the ElDewrito team would like to thank you, the community, for spreading the word, playing ElDewrito with such positive reactions, and enjoying the game we poured our hearts and souls into; ElDewrito is what set MCC PC in motion.

After that initial meeting, our small group of 5 met on occasion with 343 to discuss their future plans, gather opinions, and discuss and how they would like us to be involved in MCC on PC’s development. We have been acting as an advisory board prior to the Halo Insider program to help them shape the MCC experience. While we were brought in by 343 for our particular set area of expertise, we unfortunately have not been actively doing any technical work with them for some time now due to our area of expertise (modding) not being needed at this time. However, as Ske7ch/343 bublically mentioned in the Reddit AMA, modding is on the roadmap for a future time, and they have been focusing on bringing Halo:Reach into MCC. Here are a couple of questions you may have, which have been answered by 343 directly already. 

Will MCC have modding tools and/or Steam Workshop support? And splitscreen?

“We are working closely with the members of the modding community (including some friends on the ElDewrito team) to explore our options for "official” mod support, but we won’t have this at launch. Our #1 priority for launch is ensuring we get each of these core games “right” for PC and security/anti-cheat is a big focus. As we’ve stated, this entire offering will grow and evolve over time.”

So to reiterate, MCC will not have any sort of modding capabilities on launch, but they have stated that they want to add support later down the road, and plan to work with our team to achieve this. 

What about forge/theater?

The initial launch of MCC will not include any forge or theater functionality. Again, as they stated in AMA, it is planned for later. Below is a quote from the AMA:

“Forge and Theater are awesome features but as we learned with Halo 5: Forge, these features require a lot of extra work and diligence to bring to PC - particularly with the complexities of M/KB and remappable key-bindings. With this in mind, Forge and Theater for Reach won’t be ready at the same time as the MP/Campaign/Firefight experiences on PC. From a development perspective, it makes more sense for the team to tackle Reach’s Forge/Theater a little later in the roadmap at the same time as Halo 3 and Halo 4 work.” 

While we are beyond excited that MCC is coming to PC and this is fantastic news for all Halo Fans, many of us are a little disappointed in what is being offered on launch. ElDewrito 0.6 didn’t just attempt to bring a Halo game to PC, it brought it with a very fresh experience while keeping the Original, classic “Yep This Is Halo” feeling. An insanely enhanced forge, and a plethora of gametype and player trait customization never before seen in a Halo game. While we feel that this is a crucial aspect that should be included on launch to keep players interested with the limited initial content, we are very glad that modding support and forge are on the roadmap for a future time, and look forward to helping 343 shape this aspect of MCC. 

There are a couple of tings we particularly commend/respect 343 for, including the following: 

  1. Learning from some of the mistakes of the Xbox One MCC. 343 has made it clear that this will be released “when it’s ready”, which is the same approach we had with Eldewrito 0.6. There won’t be a broken release followed by two years of silence with MCC PC; it will be released when flighting has proved it is ready to be released.  
  2. Increased transparency/communication with the player-base. This has been very important for the ElDewrito team and we are glad that 343 has gone to great lengths to keep the community updated with accurate information. 

We are not at liberty to reveal anything else regarding our involvement with 343.

What are we doing now? 

What any group of Halo Modders and reverse engineers would do. Continue to  mod and reverse engineer Halo. Regardless of the future of MCC on PC, the team isn’t going anywhere. We’ve never stopped reverse engineering the game, engine, and resources. 

Since last April, we’ve learned so much, and have been able to do some incredible things, some of which were thought to be impossible, and you will be seeing some of this work in the near future in the form of an update. 

Bottom Line: This is in not in any way a goodbye. The ElDewrito team is not going anywhere, and you’ll be seeing a hell of a lot more from us in the future, whether it be in the existing ElDewrito mod, or MCC PC itself. As always, we will keep the community informed of our activities. Feel free to ask questions on the reddit post where this was linked. We will answer what we are allowed to answer. The future is bright my friends, and it’s time to be patient now. As for the ED team, "I think we’re just getting started.”

Til next time (Soon™), 

RabidSquabbit

My Halo Story, My Motivations, My Disappointments, And My Hope for the  Future of Halo.

This blog post is not on behalf of the ElDewrito Team. It’s on my own behalf, with solely my own thoughts and opinions. Most of this has been said before, but I wanted to share my opinions with the community on why Classic Halo is so important. Not just to me, but to an entire generation. 

I also wish to honor my promise I made to communicate frequently and be transparent with the community. 

My Halo Beginning 

My Halo experience starts just like most other halo players - with Halo CE and Halo 2. I didn’t get my first OG xbox until 2004, when I was 14. From the first playthrough of Halo: Combat Evolved, I was hooked. My best friend at the time, (and current best friend to this day), RabidEskimo and I lived just a few minutes from each other. Halo quickly became our go-to past time. With co-op split-screen campaign in both of the games, we probably have played through them 25-30 times.

You know In Halo 2, The Arbiter mission, where you start out with one player as the Arbiter and one as the Master Cheif and you have no weapons? We used to simply load up this level and have boxing matches. Melee’ing your enemies was a lot easier than punching your teammate, so you had to dodge eachother and time the punches perfectly. One punch would take out his shields, and the second punch finishes him off. We’d do full boxing tournaments, make best of 15 tournaments which we kept track of on handwritten tallies/brackets. And why did we do this? Just be because we loved the game so much. The gameplay was simple yet addicting, the weapons were fun, balanced, and unique. The story was compelling and the Universe was vast and unbelievably easy to get lost in.

Halo 3 

I never played multiplayer much on Halo 2 due to internet speed, but when I got high speed internet and Halo 3 came out for the 360, it was the beginning of an amazing period of my life that I feel was defined by amazing experiences playing Halo 3 with my high school and college friends. I remember sitting in my living room with RabidEskimo, bridging my wifi connection on my netbook to my 360 on a less than 1Mbps connection. It took us 5 minutes to find a match, but the game was so fun, we didn’t care. I remember screaming at the TV, yelling at the other players to party up so we wouldn’t have to re-search for a game, and we’d all jump up and celebrate when they did. Playing Halo 3 on a terrible connection and long search times was much better that the alternative: not playing Halo 3. It was that fun.

Moving on to college - being a Computer Engineering student, our entire floor in our dorm played Halo 3, which is how I met a lot of my best IRL friends to this day. We would have frequent system-link games between rooms. We’d play 4-player split screen and invent crazy rules, like whoever had the least stickies had to take shots. We’d find crazy custom lobbies with unique forge maps and gametypes, and play and chat with random people we’ve never met until 6AM. RabidEskimo and I would play the campaigns split-screen on legendary over and over.

While the competitive scene in Halo was massive, I was a social player. I played it to have fun with my friends, play cool gamemodes, and fight the Covenant split-screen in the campaigns with my buddies. It was the perfect game; the maps, the weapons, the balance, the art style, the story, the writing, the community, everything. ODST coming out just added extra amazing maps, firefight, and all-around great gaming. I started reading up on the lore; I read all of the Halo books, my favorite of course being the “Fall of Reach”. Halo became my favorite pastime again, and for these years, everything was perfection. 

Things Started To Change

After Bungie split and sold the rights to Halo, the game slowly started to change. Change is important, because without it, you’re just releasing a different versions of the same game. As the changes from Halo 1 to Halo 2 to Halo 3 showed, making the right changes and implementing new features without changing the ‘feel’ or core of the game can take a great game and make it magnificent. Handing off a franchise as massive as Halo is no small feat, so I expected Halo 4 to be extremely hard to ‘improve’ from Halo 3 given that a new studio was developing it, and Halo 4 was pretty much exactly as I expected. I enjoyed the story, did have fun playing it, but there was no wow factor that brought me back to the game. I never held this against anyone at all, as many people absolutely loved Halo 4. Different strokes for different folks, and a new studio needs time to get its feet wet with such a massive universe. I did not like sprint at all, the new art style made it feel a bit ‘off’. It just wasn’t for me.  

My Disappointments

My life had settled down to a point where I had gotten a steady job, a fiance, and the desire to experience true Halo came back when I had some free time. When I bought my Xbox One, my first purchase was MCC. RabidEskimo and I were ready to team up and relive our childhood, but… MCC - you all know the story. I once again gave them the benefit of the doubt. Putting 4 games that were all built on different consoles/architectures into one game on a new console is no small feat. I know much of this was probably contracted to other studios, and there were many complex factors involved. So I waited. And waited. And before I knew it, Halo 5 was out. 

Once again, I took the plunge and bought Halo 5, hoping it was an opportunity to once again relive the pure passion I once enjoyed. My buddy came over to play the campaign with me after it downloaded and we had no idea that the game didn’t support splitscreen campaign. This feature had been the main source of my previous Halo fun, and now, all of a sudden, it is gone. My friend didn’t have the money to go out and buy his own Xbox, so immediately, we could not experience our favorite pastime together with the new game, which is split-screen Halo campaigns. 

I gave the campaign a solo go. I made it two hours into it, but it just was not for me. Remember those changes I mentioned earlier? The ones that shouldn’t be made if they alter the core feeling of what the game is to a point where it no longer feels like the same franchise? Well, they were made. The game I was playing was no longer Halo, it was something entirely different. Many people enjoyed the game immensely, but it wasn’t what I was interested in playing.

Glimmer of Hope

In 2015, I was linked to the /r/haloonline subreddit in a random reddit post. I visited it, and learned of what Halo Online was. I applied for the official beta and got an invite code.

The state of the official Halo Online, and especially the already started Eldewrito mod, was pretty terrible and nearly unplayable at the time.. Spawn zones, equipment, descope, dual wielding - all were broken. There were terrible audio lags, AMD users couldn’t play the game, and there were countless connection and performance issues. Soon, the official beta was cancelled, and into ElDewrito I dove. 

I started hosting games myself since ElDewrito had a decent population due to the Beta’s shutdown. (Remember RabidSquabbit’s funhouse, anyone?). Even though the game was riddled with bugs, it was the closest thing I could find to that classic Halo experience. I soon started contributing to the open source repo to make hosting an easier experience. I wrote the voting and veto systems along with UIs and configurable Jsons for them, wrote the dedicated server functionality so hosts didn’t have to be present in-game to host them. 

The groundwork layed down by former devs at the beginning of the project’s development (before I became a dev) , and even research from back in the Halo 3 modding days, played a vital role in how we were able to accomplish the tasks we set out to do. 

Our initial goal as a team was never to make a “Halo 3 on PC”. Our goal was to take this buggy ODST-forked engine and fix the plethora of bugs and problems with it, and make it playable. As time passed, we learned more and more about the engine, reversing thousands and thousands of functions by hand. (Remember, we never had a single line of source code) We learned more about the new tags and other resources that weren’t in Halo 3, and how the engine interacted with them. We manipulated and expanded on the engine’s functionality and assets to implement brand new features without needing anything other than what the Halo Online game itself already provided to us.

When opportunity knocks, you answer the door. And what showed up at the door was a chance to do something that fans had been asking for for over a decade -  and that was a true, working, classic Halo experience that not only delivered the classic gameplay, but greatly expanded on it with tons of brand new features (a forge that rivals H5F, a completely customizable voting system for hosting customs, etc) without taking away the ‘Halo’ feeling. And all without a single line of the game’s source code. It was a project of passion for all of us, and not a single team member took a donation for the three years of work that we dedicated our free time to. We were fueled by that longing for that time in our lives when everything was perfect, when we had no cares in the world and played classic halo with our friends til 6AM. And an entire generation of Halo fans, hurt by the last decade of mistakes, were begging for this game.

The Preparation and Release of 0.6

When I joined the team, transparency was one of my main focuses. I have followed many game studios over time, and if I had learned anything, it’s that you need to be transparent with the community following you. I started writing weekly dev blog updates and also became test lead, organizing playtest sessions and helping the team fix the reported bugs. Our initial goal of releasing in September immediately blew up when we started the proper bug tracking system, but we always kept the community very informed, and it allowed me to get 3TB of 4k60 gameplay that I would eventually edit into the 0.6 release trailer. :)

Our team worked our asses off to fix bugs, put in countless all nighters pouring over network logs, and wouldn’t stop until it was done, and done right. We pissed a lot of people off with our delays, but the good thing about working for free as a hobby is that nobody is giving you orders about deadlines and game mechanics, and you can do things the right way, make the game the players want. All of our decisions could be based on the gameplay without having external factors such as profits interfering with the development direction. Most importantly, we could wait to release the game until it’s actually a working, finished, tested product.

I have talked to many game developers across several studios and companies. I’ve known many people who have worked on projects for game studios or publishers that were engineering/game dev jobs, and they didn’t even know what game is was that they were writing code for. They were given a directive and project to work on, but had no idea what it was for. Just some parameters and a deadline. Our ED team was the exact opposite, with one large open line of communication for discussion and collaboration. When we couldn’t decide on an implementation, we’d cast a vote. I have worked as a Software Engineer professionally for 6 years, and our ElDewrito dev team is the most efficient and talented team Ive ever had the pleasure of working with. Through all of this knowledge sharing and collaboration, we have learned so much about the different parts of the engine - even havok’s inner workings, that given the game/engine’s source code, we could probably re-implement in a month or two what took us 3 years to do without source code. 

Once I released the 0.6 release trailer, we were blown away by the response. Well over a million views, articles from PC Gamer, Arstechnica, and many other outlets. We could feel the passion and nastalgia emerge from the community. The final three days were all-nighters for everyone - putting the finishing touches on that Beautiful new UI, finishing setting up all the dedicated servers and playlists, and just general release preparation.

Apart from a 1-hour blip with the server browser, launch was perfect. We had zero marketing, but a game we we were so careful to perfect needed no marketing. The game itself was the marketing. Within two days, we had 9000 concurrent players. Some popular streamers started playing it and loved it. On the 4th day, it was the most streamed, and played, Halo game of all Halo titles across all platforms at the time. My college buddies and I immediately dove in, and they were hooked. Finally, that classic experience we enjoyed in college was back, and for the first time in 8+ years, we loved Halo again. For four wonderful days, I experienced my teenage and college years again. Constantly full 16-player lobbies, crazy custom maps created with the expansive new forge, and chatting with random people about Halo until 6AM. 

While the mod still lives on, it was only 4 days before Microsoft started rightfully issuing DMCA takedowns on their assets that were being distributed by random community members or torrents (NOT the mod’s dev team). I do not know what the future holds. All I know is that watching three years of work slowly die hurts. We have not yet met with 343 or Microsoft (other than the initial meeting on the day of the Waypoint blog), and understandably so - these things take lots of time to prepare and organize, and with E3 coming up, they definitely have had their hands full. In our brief talks so far, 343 has been professional, kind, and even sympathetic of the unfortunate circumstances we all find ourselves in. 

My Hope for the  Future of Halo

I hope that we can collaborate in some way with 343 Industries to deliver (or continue to deliver) an experience that we just proved has a huge demand. 

I truly believe 343 is extremely passionate about the Halo universe and is investing immense effort to deliver the absolute best experience they can deliver, while learning from the mistakes that have been made over the last decade. After watching the ‘Halo: Infinity’ engine showcase at E3, it definitely looks like they are trying to bring back a ‘classic’ feel with a new art style for their next main Halo title, which is great. 

I just hope that collectively, we can help to put the ones in charge into the shoes of an entire generation of classic Halo players, understand what the game means to them, and give the consumer what it’s been begging for for 10 years.

Microsoft’s Legal Action and the Future of ElDewrito

ElDewrito’s 0.6 update has been everything we could have hoped for and so much more. The community response and support we have been given has been exciting, humbling, above all, appreciated. We have poured our hearts and souls into this game, and you have been the best community we could have asked for. 

Unfortunately, 343 Industries and Microsoft have noticed it’s success, and have reached out to us regarding potential legal action, and have requested we temporarily halt development.

You can view their article and statement here: https://www.halowaypoint.com/en-us/news/eldewrito-community-content

Microsoft had this to say about 0.6′s release.

“While we are humbled and inspired to see the amount of passion poured into this project, the fact remains that it’s built upon Microsoft-owned assets that were never lawfully released or authorized for this purpose. As this project reverberated across the community, our team took a step back to assess the materials and explore possible avenues, while Microsoft, like any company, has a responsibility to protect its IP, code and trademarks. It’s not optional in other words. “

“BTW, we’re not “shutting down the mod” or going after the Eldewrito crew - we’re enacting action to remove the Halo Online code and packages from places it’s being hosted.. “

There was no Cease and Desist, no DMCA, just an brief conversation about what they suggest we do.  

What does this mean for the future of ElDewrito?

To be completely honest, we do not know the answer to this question yet. Our conversation with 343 was very brief. Since ElDewrito itself is simply an open source mod and not a Microsoft asset, the mod itself will not be taken down. However, it appears that any Microsoft assets required to play the game (MS23 builds, Full 0.6 game zips, ect) will likely be taken down by Microsoft. All we know is that have been told to temporarily halt development until more information is available, and we must honor this request. During this time, please do not make threats or harass 343 Industries. 

Can We Still Play 0.6? 

Yes, absolutely! Play the hell out of it. Create more incredible forge creations. You can resume playing 0.6 as normal. It is important to note that ElDewrito itself is not being taken down - just any and all of Microsoft’s assets are. In the meantime, enjoy the great game that we have poured our hearts into. 

The number of people that have played 0.6 has blown us away. At the time of writing this post, there are over 8000 players playing. Here are some cool facts about the stats recorded in just 4 days of playing 0.6.

image
Weapon Distribution:
image
Most Common Methods Of Betrayal:

image
Methods To Commit Suicide:
image
Medal Distribution:

image
Map Distribution:
image
Gametype Distribution:

image

ElDewrito Dev Update (Mar 26, 2018) Part 1

During our last blog post, we announced that we were ‘Feature Complete’. The purpose of this blog post will be to provide an update on the status of our regression testing. We will talk about our general testing approach, go into detail on a few specific bugs we fixed, and provide an estimate with how much is left to test. And as always, we will showcase some new forge maps that have been made since the last blog post (In Part 2 below).

Regression Testing

We are currently in a ‘Regression Testing’ cycle where we test every feature that we have added over the past two years.

Since the release of 0511, there have been around 1700 new commits to the Eldorito github. To put this is perspective: that is around twice the number of commits that occurred from the very initial commit of the project up until 0511. This single update is twice the size of all the other updates combined, from a git commit perspective at least.  

Over this time, a new UI architecture has been put in place (CEF), dozens of parts of the engine have been added/modified/removed, and countless features have been added, tweaked, or repaired. With each new element that we change or add, it opens the possibility of breaking something previously added or fixed. To properly test that everything works as expected, we’ve made exhaustive checklists for every piece of the game, each with a countless number of tests to perform/check.

As expected, this approach has resulted in a ton of bugs reported. Luckily (so far), most of them are small, and we’ve nearly been able to keep up with the testers and fix them as fast as they are being reported. Since our last blog post on March 4th, over 100 bugs have been fixed, although most of them are pretty small ones.

Obviously I’m not going list all of them here. You can view the github commits if you’d like to see the individual things we’ve fixed. I will, however, list some of the more important ones.

Significant Bug Fixes

Fix forge skybox clipping

Previously, you could only swap skyboxes. However, this resulted in a problem: clipping. For example, the guardian skybox is small, and the location of the trees would often clip into any map you used it on. You can now completely control the position, and rotation of the skybox. The position can be set as default or moved around with the map modifier object. This allows you to make cool maps like this

image

image

.


CEF Backend Replacement

CEF, which is what we use for our new UI screens, has had some fixes applied to increase performance and prevent crashes. The CEF request handling backend was ripped out and replaced as it had numerous issues with threading which were causing crashes.

Scoreboard Overhaul/Optimization

The CEF scoreboard was written quite a long time ago when CEF was first brought into ED, and it was an extremely CPU-intensive screen. It rebuilt the entire DOM every time it received an update from the game. In addition, the C++ function that builds the json for the screen layer to use was also extrememly expensive.

Both the javascript in the screen layer and the game function that builds this information have been completely reworked to only send and update the necessary information, instead of completely re-fetching and rebuilding it. This has resulted in a very big performance increase from the CEF process. During a full lobby, the CEF .exe CPU usage is less that half of what it used to be. Here she is in all her glory 

image

Expanded global render object geometry

If you’ve seen any of our previous gameplay videos, you’ve probably noticed that often times, there is flickering going on, particularly on the ammo counters of the AR or BR. It turns out that there’s 1024 slots in memory for object geometry and 8196 slots in memory for all other geometry. We noticed that the object geometry was filling up but the other arrays were not. By shrinking the memory of other unused geometry arrays and giving more to the object geometry, the issue seems to be resolved without any negative consequences.  

Player Size

During our last post, we received an overwhelmingly positive response regarding the ability to change player sizes as a trait. While what we had implemented at the time was cool, it was something we had kind of thrown in at the last minute, and it wasn’t done ‘properly’. For example, the collisions, physics model, animations, everything about it was relatively broken. We never intended it to generate so much hype, and we quickly realized that proper player sizing implementation had true potential. So, we fixed it. We fixed it all. 

Consider what used to happen when you were a really large player in a smaller room/area:


Obviously, this was pretty damn terrible. 

Physics Model Scaling

The player’s physics model is now fixed and automatically being scaled at runtime according to his size. For those of you who don’t understand the significance of this: collisions, shadows, damage, animations, speed, pretty much everything is being appropriately scaled based on player size. This introduces an entire realm of gameplay. Games can be actually played in spaces like this one with a near-identical experience they would have playing as a normally sized player.

image

image

image
 

You can also still customize player speed, gravity, etc. through the gametype options if you want a specific or more precise customization. A large number of additional player sizes have been added to the list in the gametype UI that you can choose from. There are over 20 sizes to choose from ranging from 10% to 3000%.

In Part 2 of this post, the map called ‘Catwalk’ is being played at 50% size. Without me telling you this, you probably wouldn’t be able to tell because the physics is scaled so well. Here is a video showing a wide variety of fixes related to player scaling:

A video showing collision damage from a massively scaled spartan:

Another giant spartan walking on some warthogs. Note: This one’s movement/animation is a bit outdated.


Now What?

We’re going to hammer out this regression testing and release this bitch. We have quite a few checklists to go through yet, so we cannot accurately give a release date, but the harder our testers work, the faster this gets released. We will only be fixing high-priority bugs and will defer some minor or cosmetic ones to a future patch in an effort to expedite the rest of 0.6′s bug fixing. 

We know you’ve all been waiting for 0.6 for a long time; some patiently, some not so patiently. It’s just as hard of a wait for us as it is for you. Trust me when I tell you that it will be worth it, and the end is very very close.

I don’t plan on writing another blog post before release. Hopefully the next time you hear from me will be in-game. You’ll find me in the official BTB playlist, sucking as usual. 

Sincerely, 

RabidSquabbit

ElDewrito Dev Update (Mar 26, 2018) Part 2

You know that area behind Last Resort where those generators are? Well, I made all of those stairs and catwalks fully functional and made a complete map out of it. With player size set at 50% and physics scaled correctly, it feels like a massive new map. Note: This one is definitely still a work in progress, as it was made just a couple of hours before playing on it. Forgive my bad aiming too; playing on a giant TV with bad response time isn’t doing me any favors. 


Here’s a video of a game on the foggy version of Standoff with Guardian’s skybox. The giant trees give the map a whole new feeling. Also notice - you can’t see the enemy’s nameplates (but you can see your teammates), so the nameplates don’t give away the enemy’s position through the fog. 


Here are two new maps made by our lead tester, Xennma. This first one is title ‘Twin Worlds’. Don’t mind the random pauses; I was turning assassinations on and off as a test. 


This second one is titled “Trench Warfare”. You’ll notice some flickering/artifacts at certain points of the match. This was due to too many objects accumulating on the map (weapons, dead bodies). This has been fixed with garbage collection volumes. 

ElDewrito Dev Update (Mar 04, 2018) Part 1

It’s been about a month since our last post, and we apologize for the lack of dev blog updates. Many of our team members have been busy/away during parts of the last month (I just got back from a much-needed week long vacation, snowboarding in the Rockies). While we would have liked to have 0.6 released by now, please remember that we’re all doing this in our spare time for free, and sometimes we burn out, or simply aren’t able to work on it as much as we’d like.

That being said, we’re back at full force with refreshed minds and ready to hammer this thing out.

I’ve read many comments from many people, whether it be on reddit or discord or PMs, saying that our communication is too infrequent and needs to be improved. While I do not need to apologize for taking a vacation, I take these comments to heart. It was only a year and a half ago when I was in the same position you are in, on the outside looking in, asking the same thing from the devs. It’s why I made that first 0.6 update post and it’s why I have been writing these blog posts. I’ll honor your guys’ request and go into as much detail as possible.

I’ll discuss the progress we’ve made since our last post, what’s remaining to do, and also showcase some cool new stuff we’ve added. And as always, we’ll show you some new gameplay using the new features or new forge maps.

This blog post is two parts. If you don’t care about the technical jargon and just want to see cool stuff, skip to the bottom - there’s some cool new features to see. For the rest of you, sit down. This one’s a long read; you asked for it.

The ‘Dedi Connection Bug’

In our last blog post, I went into detail about the ‘dedi connection bug’. As you recall, this bug has two manifestations:

  1. Player A can’t join a server because it conflicts with player B already in the server. The join request is actually rejected.
  2. A player attempts to join a server, but the establishment process never completes, yet the player is able to join the voip server and can hear players in the server. This manifestation has multiple root causes.

One of our team members, unk_1, wrote a log parser to detect occurrences of the dedi bug. We turned on network logging on a few of the 0511 dedicated servers and left them running for a week at a time. After analyzing the logs, we’ve found that manifestation #1 accounts for about ¾ of the connection issues. As I mentioned last post, #1 has been completely fixed already.

A lot of work has gone into trying to fix number 2, and while some occurrences might be out of control for the time being (restricted NAT type for example: remember Xbox 360 NAT type issues?), we have made great progress and have fixed one of its causes. I’ll go into a bit of detail about that here.

MTU and Packet Fragmentation

The MTU (maximum transmission unit) is the size of the largest amount of data that can be sent in a single network transaction. If a packet is too big (larger than MTU), routers will fragment this packet into smaller ones and then the data gets reassembled. This fragmentation can lead to a much higher chance of packet loss. In addition, not all routers behave the same in regards to packet fragmentation, and many do not obey the ‘Don’t Fragment’ flag in the IP protocol header.

Why is this relevant? After lots of digging and research, we found that some of the packets that are exchanged during the establishment process were bigger than the MTU size. The solution? Shrink them down to a valid size so that they don’t get fragmented. After testing this in 0511, we saw the number of manifestation #2 occurrences decrease.

While this is great news, many #2 occurrences still were still present in the logs, and we believe many of them are related to NAT. We will provide a how-to doc when 0.6 releases on how to check/open your NAT type, as well as other useful info to ensure that other players can connect to your server without issue. As for the other #2 connection issues that may (we aren’t even sure if any remain) still exist that are within our control, we’re going to leave them to be fixed them in a later update. Debugging these issues are a slow, tedious, painful process. We can’t have this issue delay us any further, so we’re calling it a day. Note: So far, with the #1 and #2 fixes in, we haven’t had a single dedi bug re-occurrence in our testing sessions, but that doesn’t necessarily mean that there aren’t rare connection issues hiding somewhere that we haven’t been able to replicate.

The Updater

The usual question. We’ve made great progress on the updater, and it is pretty much finished. The updater will be a lightweight standalone exe that will allow you to update to the latest version, and even downgrade to previous versions. The updater will not need to be ran to start the game, nor will it act as a launcher like the 0511 updater does. It’s simply an updater. When a future update comes out, for example 0.7, a message will be displayed on the title screen when you boot up the game, telling you that you need to close the game and update. Open the updater -> click update -> done. There are a couple of very small bugs we’ve found during the testing of it, and those are being fixed.

Enough about the boring stuff, on to the fun stuff.

Misc/Small Bug Fixes since last post:

  • Settings - Fix for Alt binds
  • Added forge binding to deselect everything
  • Allow held forge object to be extended unconstrained
  • Fix transparent materials for reforge
  • Fix ‘default’ weapon offset preset doesn’t work in the in-game menu
  • Fix atmosphere toggle on map modifier
  • Fix weather effects not working on certain maps
  • Fix issues with custom fog not working well on certain maps
  • Discord UI - Fix the Ui showing breifly upon starting the game
  • Chat UI - Add warning alert for opening links that may be unsafe
  • Fix crash related to forge kill volumes
  • Fixed exe remaining running in background due to Discord rpc not shutting down
  • Fix duplicate requests for player info (rank, emblem, ect)
  • Jaron’s emblem editor that we showed a preview of in the last post has been added and touched up. 

Q: Has anything you’ve previously shown us not going to make it into 0.6?

A: Yes, unfortunately the doors and fans we showcased in the last blog post have too many issues and are not ready for prime time. We want them to be polished before adding it, and doing so right now would be time consuming and would delay release. Keeping the doors and fans as-is in 0.6 would break any maps using them we were to fix/polish them in a later update. For these reasons, we’ve decided to exclude these from 0.6 and add the doors/fans to a future update instead.

Q: Have any new cool features been added since the last post?

A: Absolutely. 

But before I go into detail on these, I want to make an important distinction about why things are still able to be added while we haven’t released yet. We often see comments like “Why are you still adding features when you could have released?”, or “just release the game and add stuff to it later”.

That’s not really how development for this game works. This team has quite a few active developers. If two people are working on a must-fix bug, say ‘the dedi-bug’ for example, there are other members of the team who are still available to work on other things. If devs A and B are developing the new updater, that doesn’t mean that devs C-G need to sit and twiddle their thumbs until the updater is finished. Some bugs are very complex, and only certain members of the team have the expertise to fix them. This produces opportunities for us to sneak in extra features without slowing down our 0.6 progress whatsoever. So to be clear, extra features that we’ve been showing off in the last few blog posts have not in any way slowed down or delayed the release of 0.6.

That being said, buckle up, because we’ve got some cool new shit for you.

Glass and Emissive Glass have been added as forge materials. Any reforge object can be given a glass or emissive glass material, and can have customized opacity and color. 

image

.

image

.

image


40 New Materials have been added for forge objects.
In addition, Forge Material textures can now be scaled, and the x and y offsets   can be adjusted.

Here is a video showing some of these new materials being used in forge, as well as how to adjust the scale and offsets.


Fog has been drastically improved to look more realistic. Here are a couple of examples:

image

.

image

.

image


Directional lights have been added.
 You can control the direction, intensity, fov radius, color, and near width of any light. Here is an example picture:

image

.

image

Directional lights are great because you get much more control with bleeding (the light doesn’t go through the objects). you can set the FOV to something high like 180 and it’s like a point light but it won’t bleed above it through objects. In this example - here’s where the light is:

image

With a point light instead of directional light, it would be super bright up here:

image


Pulse and Flicker functions
can also be applied and customized to any light source. You can control the minimum intensity, maximum intensity, as well as the frequency of the pulse or flicker. Here’s a video showing some of these lights being created/altered in forge.


Player size is now a gametype option/trait.
Players can be scaled to be tiny, huge, or anywhere in-between. For example, you can create gametypes where the players become huge while in the hill or in the lead, or tiny while holding the ball or flag. A small map like the pit can suddenly turn into a BTB map. The sky is the limit. Players also animate between the two sizes, so they don’t just instantly magically appear large or small when transitioning from one size to another.

A full gameplay video where players are tiny, but become big and slow while inside the hill in a game of KOTH is posted in part 2 of this blog post, but here are a couple of pictures.

image

A huge spartan driving a Warthog:

image

Large Spartans as a hill trait:

image


Skyboxes can be swapped to/from any map
. Yep, you can now choose any skybox you want when creating a forge map. There are options for inheriting the fog that comes with the skybox, or you can override it with your own custom fog.

These skyboxes open an whole new realm of creativity. Take a look at some simple examples of skyboxes being used on different maps.

image

Guardian Skybox on Narrows

image

Valhalla skybox on Sandtrap:

image

.

image

.

image

.

image


Here is a video showing how to change/alter skyboxes: 

Here is a small album of 4k images. I will add additional images to this album throughout the day. 

Additional Weather Effects have been added. Heavy Snow, Rain, Falling Ash, Slipspace Fallout, and Flood Pollen can now be used as weather effects. While the rain effect is a little underwhelming and needs some work (it doesn’t look very realistic yet), some of the other effects are quite cool. Here’s a gif of the “Slipspace Fallout” effect.

image


Don’t forget to check out part 2 for some gameplay videos, but for now, let’s get back to business. 

Q: Now What?

A: We are at a state where we now consider the game to be ‘Feature Complete’. All of the major bugs that we’ve committed to fixing have been fixed. All of the features that we committed to adding, have been added. No more features will be added. We are going to enter a short, exhaustive, ‘Regression Testing’ cycle where we test every feature that we have added over the past two years. The only commits that will occur between now and release will be fixes for bugs found during the regression testing cycle. The reason this is necessary is because over time, parts of the code have changed, been refactored, moved, ect. We need to ensure that we haven’t broken anything along the way. One of our main devs, unk_1, once said “I can’t overstate how much i just molested the engine over the last 2 weeks. It needs to be tested like a lot.” And that’s what we’ll be doing. 

When we’re finished, you’ll know. 

Until next time (or until we’re playing right along side you);
Sincerely, 

RabidSquabbit

ElDewrito Dev Update (Mar 04, 2018) Part 2

Here’s a game on a foggy, snowy standoff. As you can see, the nameplates are not visible through the fog. (Note: We’re making a fix so that nameplates can still be shown for your own teamates)


Here’s some gameplay of a Blue Valhalla with a different skybox. 

Here’s some gameplay a dusky, starry Sandtrap: 

Here’s a game of Team King where the players become big and slow when entering the hill. 

ElDewrito Dev Update (Feb 02, 2018) Part 1

Our last update was on January 10th, so we apologize for the lack of blog posts. We told ourselves we would make a new blog post when we had something substantial to post about, so here we are. The last month has been an exhaustive dive into the deep depths of the networking engine in an attempt to fix a problem that has plagued ED since the very start - Connection Issues. This will be the main topic of this post, but we still have plenty of other goodies to show you :) 

Note: This blog post is also long one, and is two parts, so make sure to scroll down to the next post when you’re finished reading this one.

The ‘Dedi Connection Bug’

As you probably see on every single bi-weekly reddit post, and mentioned in the last blog post, there’s a bug that gets mentioned a lot: ‘The dedi connection bug’. This bug is actually a series of multiple, separate bugs, but manifest itself in two ways:

  1. Player A can’t join a server because it conflicts with player B already in the server. The join request is actually rejected. Once player B leaves, then Player A can join again. This has 1 root cause
  2. A player attempts to join a server, but the establishment process never completes, yet the player is able to join the voip server and can hear players in the server. This manifestation has multiple root causes. 

To understand the magnitude of work required to fix these, you can compare this issue to AMD Freeze bug we fixed - Then multiply it by 4. In order to be able to fix something like this, A large portion of engine needs to be completely reversed just so we can get a handle on what is going on. An enormous amount of time, energy, and teamwork has gone into figuring out exactly why these issues occur. Entire books on networking have been read. Hundreds of wireshark captures and game logs have been poured over. 655 engine functions have been reverse engineered by Unk_1 trying to fix these issues. You read that correctly. 655. Remember, we have no source code. 

Connection Issue 1

As I mentioned above, the first issue, which is an extremely common issue, is when a player can’t join because it is conflicting with another player in the game.
This bug has 100% been fixed. 

To make a long story short, there’s a unique identifier for each peer that the server creates, and it uses this identifier to look up information. The problem was that some players ended up with identical identifiers, so the server didn’t know who it belonged to. We even ran into scenarios where a player was rejected because the server thought the client was itself.

After further investigation, we found out that the server was creating this identifier based on a simple combination of the client’s Local IP and Port.  Since most routers that people have in their homes are on the same 192.168.x.x network, and everyone is using port 11774 as the game port, tons and tons of conflicts happen. 

By changing the way this identifier is created, we have squashed this bug entirely :)  It’s a massive relief to have finally figured it out, but we’re not quite done yet. 

Connection Issue 2

This manifestation of the bug has multiple root causes, and we are still working on these. However, most of the reversing and groundwork is already done - now we just have to continue to replicate, track them down, and fix the ones that are within our control. 

Q: Why haven’t you released yet? What is preventing you from releasing right now?

The usual question. The updater is coming along nicely, there’s not much work left to do on it. The main thing left is to finish squashing the remaining connection issues, and we’ll be all set. We don’t know how long it will take to fix the other issues, but don’t expect them to take long at all. 

Enough about the boring stuff, on to the fun stuff. 

Misc/Small Bug Fixes since last post:

  • Fix crash when map or gametype DisplayName is too long
  • Fix Battle Rifle showing “NULL” instead of “WEAPON” in search
  • Fix Banshee Bomb bind for H3 Bumper Jumper
  • Profile Settings - Stop changing tabs from breaking esc exit
  • Customization Menu Fix - Better check for active subform (esc exits immediately if no subform open)
  • Lots of Misc HTML/CSS/JS cleanup
  • Added Server.NumberOfTeams variable so it’s easier to control the number of teams in Multi-Team games. 


Q: Have any new cool features been added since the last post?

A: Absolutely. 

We’ve added many cool new things to forge, including openable/closeable doors (both manual and automatic), gears, giant fans, those pillars in the center of Reactor, and much more. 

Here’s a pic of some of the different properties you can set.

image

You can also tether objects to other objects. For example when a gear (wheel, fan etc..) is on the same channel as other devices, it will power them by the turn rate. We also had a little fun with it

There is now a new game variant setting for being immune to assassinations:

There’s also a new game variant setting for showing/hiding nameplates. This is especially useful for foggy maps (as you’ll see in the Foggy Resort video below) where the player’s nameplate gives away his position even though he can’t be seen through the fog. 


Infection havens have been added, which is a zone trait where you cannot become infected by zombies. (These were in Halo: Reach’s forge)

image

I’ve also finally gotten around to implementing the ability to completely customize your emblem while in-game.  Doing it on Halostats through the server browser screen is fully implemented, but one of our testers, Jaron, is working on adding it to the customization screen for those that prefer to use a different browser. In addition, he’s added wide variety of addition emblem images and icons that were not available in Halo 3. 

ElDewrito Dev Update (Feb 02, 2018) Part 2

Q: Where are the new videos of testing gameplay?
A:
Right here.

Here’s a video of some Team King on a forge map name Crude, made by Rex706

Here’s some gameplay of “Space Map”, created by Clutchism, which showcases the new gravity forge settings - high in the sky above Valhalla.

Here’s some gameplay of a foggy Last Resort. As you can see, the nameplates can sometimes give away the position of an enemy even when you can’t see them through the fog. This is what prompted the game variant option of hiding the nameplates, which resolves this issue. 

Here’s some simple team slayer gameplay on “Flurreactor”, showcasing how basic weather effects and lighting can be changed on a map. 

Here’s some Most Pit Madness on that Snowy, Foggy guardian we showed you during the last post: 


I can’t embed any more videos, but here’s some gameplay on an updated version of Torrent (The map that was made during the 1.5 hour forging session video) 

ElDewrito Dev Update (Jan 10, 2018) Part 1

Three days late, but late is better than never. With the holiday season being over, we’ve been hard at work on trying to get this thing wrapped up. We’ve made some incredible progress over the last two weeks, and while we still have 2 things to finish (I’ll go into more detail later) before we release, we have some very good news, as well as a few surprises for you :) Note: This blog post is a long one, and is two parts (You can only embed 5 videos per post, so make sure to scroll down to the next post when you’re finished reading this one). 

The AMD Freeze

It’s done, finished, fixed. All versions of AMD GPUs on any firmware version will no longer get the AMD Freeze. While the code to fix this issue is amazingly simple, the process to track it down and fix it was the most challenging bug we’ve faced, due to the sheer amount of reversing that needed to be done to figure out where the problem was rooted.  So what was the problem? If you recall from our last post, we had narrowed down the cause of the problem to contrails.

When contrails are rendered, geometry is sent to the GPU through what is called a vertex buffer. Once the geometry is in the vertex buffer, you can render as many instances of that geometry as you want efficiently instead of constantly sending it to the GPU every frame. One of the things you can do with vertex buffers is specify a start offset in which to start plucking vertices from for the draw calls. This Allows you to store multiple kinds of geometry in the same buffer. You set offset to where the geometry you want to render is in GPU memory and make the draw call, instead of having a separate vertex buffer for each different piece of geometry which would have to be bound/sent to the GPU with every draw call. 

The problem was that this offset somehow ended up negative, which doesn’t make any sense. Nvidia seem to ignore this, but amd does not like it one bit. The device driver crashes and the device goes into the hung state. Halo online doesn’t deal with hung devices. When a device is in the hung state only two functions work: CheckDeviceStatus() and Release() therefore, while the game was still rendering, all the draw calls were being ignored, and hence the “freeze”. What’s the solution? Intercept the function that sets the vertex buffer stream offset and make sure that it’s not negative. If it is, set it to 0. Done. 

To give you an idea of what unk_1 and those of us testing had to go through, here’s a video of real-time contrail debugging that he had to implement. 

One of our testers, Xennma, has a card so freeze-prone, it would freeze immediately on the main menu because of the Valhalla tower beam contrails. Here’s the video of the actual freeze being caught in action by Xennma. As you can see, there’s a negative offset. Once we saw this negative offset, it was game over. 

To show you how confident we are that this is 100% fixed, check out this very short clip of Mosh Pit Fiesta Guardian that I took using the flycam. Look at all of those contrails. We had three freeze-prone AMD cards in this game, and not one freeze occurred. 

Q: Why haven’t you released yet? What is preventing you from releasing right now?

0.6 is at it’s most stable point yet in terms of crashing or freezing, but there are just 2 things left to do. 

  1. The new updater has made even more progress, but isn’t quite finished, and we still need to rigorously test it. 
  2. As you probably see on every single bi-weekly reddit post, there’s a bug in 0511 that gets mentioned a lot: ‘The dedi connection bug’. This has reared it’s ugly head for some of our testers recently, making it impossible to join testing sessions. We’ve already started troubleshooting this one and have some leads, and we believe this is the last real ‘bug’ that has to be fixed before release.  

Misc/Small Bug Fixes and improvements since last post:

  • Fix ‘none’ game variant weapon option
  • Fix 'change gametype’ and 'change team’ h3 ui spinner display values
  • Fix crash when render model materials block is empty
  • Improved ragdoll fix: restore death animations, h3 ragdoll backflip
  • Add sanity checks in TagInstance::GetGroupTag (was causing crashes)
  • Fix simulation damage aftermath acceleration properly
  • Fix incorrect voting time remaining (for real this time)
  • Cache http server response - Reduces CPU usage
  • Dedicated server cpu/ram optimization (cuts the dedi’s cpu usage in half)
  • Added bottomless clip as a player trait 
  • Updated the forge selection render (picture below)
image


Since some of us have had some downtime while the updater and dedi bug are being worked on, we’ve added some more bad-ass features. 

Gravity, Fog, and Snow have been added to the map modifier and can be completely customized for any map. 

You asked, and we delivered. You can now add and customize snow and fog to any map. Gravity is a slider. Snow is a toggle. For fog, you can change the fog visibility, fog density, fog color, and fog brightness. 

Here is a short video showing how to customize the lighting, fog and snow using the new forge; 

Here’s a video showing how to use and change the gravity settings.

Here are a couple pictures of other examples. 

image
image

For footage of new gameplay on maps using these new features, continue reading the next post below, which is part 2 of this blog post (Since I can only embed so many videos).