1. The Endless Mission
  2. News

The Endless Mission News

Patch Notes 6/16/21

Hi everyone!

It's been a little while. We're happy you're here and we hope this update finds you well!

We have some exciting things coming in The Endless Mission - starting with a brand new update today featuring a fully revamped Editor! Complete details are below.

Account Login Changes
The first thing you may notice when you go to log in is that the login process has changed (no, you're not imagining things). We’ve moved away from a Steam login into an independent account system that's platform-agnostic.

Super-duper important note: you will no longer be able to log in with your Steam account. Going forward, you have a couple of options -- you can either create a new account or email us to recover your existing account. Send an email to [email protected] from the email address you associated with your initial signup and we will send you a temporary password that will allow you to sign in and choose a new password.

Editor Revamp
We’ve also massively overhauled the visual components of the Editor. From a brand new "Simple Hierarchy View" that allows you to specify different groups of objects to edit at once, to improving the resizing and collapsing functionality for columns -- every little nook and cranny of the Editor saw some love as part of this update.

We've also removed the Lens system in the Editor since it wasn't accomplishing what we wanted it to. That said, it may return in a future update, so stay tuned!

This is just scratching the surface for the update, so be sure to dive in and see for yourself! As always, if you have any questions, come find us on our official Discord (discord.theendlessmission.com) or drop us an email.

See you in the Terminal!

~The Endless Mission Team

Behind the Design: Weasel Raceway (Part 2)

Welcome back, designers! When we last left off, I had just finished laying down the groundwork for Weasel Raceway, both metaphorically (giving the weasels racing AI) and literally (the track). Of course, I still had a lot to do, so the only question now was… what’s next?

[h3]Make or Break Time[/h3]
The track may have been done, and the player could run laps on it well enough, but it was still missing a few key components before it could be considered fully functional. These included:

A.) Some sort of “checkpoint” system to make sure the player is actually making full laps and not taking unintended shortcuts.
B.) A way for the AI racers to successfully navigate the course.
C.) Something that puts the racers back on the racetrack if they happen to fall off in any way.

The good news? All of these features are already part of the racer template game! The checkpoints are trigger volumes that span entire portions of track and are stored in a list - you have to drive through all the trigger volumes in order before crossing the finish line in order for it to register as a full lap. Meanwhile, AI racers navigate using a list of waypoints, already programmed to try and get as close to one waypoint as they can (with random variance built in so they don’t all follow the same exact line every time) before moving towards the next one in the list. Finally, more trigger volumes can be set up alongside the track or inside pits that, when entered, automatically teleport the player or AI back to a specific point, making sure no one gets too far off-road. All that said, while the systems were all already in place, it was still my job to customize them specifically for my racetrack. How did I make sure all my adjustments worked? By doing the single most important thing one can do when creating games…

Testing. Lots and lots of testing.

Sorry kids, you’ll still be doing a lot of tests even after you leave school.

Once I had finished my initial pass on placing down checkpoints, waypoints, and teleporters, I spent a lot of time playing through the game over and over, seeing where I needed to fine-tune things further. The checkpoints worked without a hitch, but it was the waypoints that proved to be a challenge. If you have too many, there’s little room for variance in how the AI moves through the course (not to mention bog down the game trying to keep track of them all). Too few, and you have the AI hitting walls and clipping corners due to trying to take too direct a path between waypoints. Plus, the position of the waypoints on the course itself is important: It may seem like the easiest solution is to always place them in the middle of the track, but that can result in the AI overshooting certain turns and slamming into walls (you generally want to put the waypoint on the inside of turns to prevent this). The only real way to see if you’ve placed the waypoints correctly is to play it over and over, stay as close to the AI racers as you can, and see what points on the track they seem to have issues navigating. Then, go edit the waypoints in that portion of the track and hop back in to see if they perform better with those changes. Rinse and repeat until your AI makes it through the entire track successfully.

As for the “whoops I fell off the track” teleporters, testing and adjusting them is a little different. You can’t really use the AI to test how effective they are since, ideally, they aren’t falling off the track that much (and if they are, you might wanna go back and check those waypoints again), so you’ll have to test them yourself by hopping over rails and messing up jumps at every available opportunity. The important thing when doing this kind of testing is to be incredibly thorough and not take any possibility for granted. Sure, you’ll want a teleporter underneath a jump in case the player doesn’t have enough speed to make it, but what if they make a sharp right turn in the middle of the jump? Or attempt to pull a u-turn as soon as they leave the ramp? And sure, you may have railings throughout the entire course that ordinarily can’t be jumped over, but if someone holds onto a boost power-up and uses it on the peak of a hill, will they get enough airtime to hop it then? It may sound silly to be worried about covering these edge cases - after all, who in their right mind would even try obviously bad ideas like that? - but something you learn quickly is that players love trying silly things just to see what happens. The more you’re prepared for it, the better.

The green boxes are the trigger volumes for the teleporter. Note the ones behind the hole racers jump out of on either side. They’re there because you can midair turn hard enough to reach them. Completely absurd? Yes. Will someone try it anyway? Also yes. Always be prepared, yo.

One last thing: When testing, always take into account not just everything a player could do, but every state the player can try it in. Remember how you can choose between a Lightweight, Middleweight, and Heavyweight racer? For the longest time, I was doing all my testing with the Middleweight racer, since that’s the “default” option. It wasn’t until I was testing out the various jumps on the course that it occurred to me to ask “wait a sec, Lightweight racers have a lower top-speed; will they have enough speed to make this jump that the Middleweight and Heavyweight racers have no problem with?” And it’s a good thing, too, because I quickly discovered that they could not, and I had to adjust the jump accordingly. This won’t always be an issue depending on what kind of game you’re creating, but if you give the player the option of altering their physics or stats in any way, make sure to test the game with all those options.

[h3]Made to Ruin[/h3]
So the track is 100% complete and all the necessary bits to make it work are in place. At this point, the game is, from a technical perspective, “done.” It’s fully functional and playable from beginning to end. I could’ve called it here and just uploaded the game to the content portal as-is. But people don’t want to just play featureless tracks suspended in space; theming and decoration to bring things to life is a major component of any video game. Just because you don’t directly interact with it doesn’t make it any less important! So, with the track finalized, it was time to go in and make it look like a proper race through an ancient ruin.

Admittedly, giving a full “walkthrough” of how I did the backgrounds and scenery for the game feels kinda unnecessary, as the whole process can be pretty subjective and entirely dependent on your personal sense of creativity. Still, there’s at least a few pointers I can give:

Box Out Everything First - One of the first things you should always do is “box out” what scenery you want and where using basic shapes. Plop down featureless walls to mark out the size and shape of your buildings. Drop a huge cube where you want to eventually create a statue. It’ll all look pretty ugly at first, but the point of this is to explicitly lay out exactly what you eventually want to get around to doing. This will help you make sure there’s room for everything (can I have this wall here without it intersecting the track?) and figuring out what scale everything needs to be at (how large should this statue be if I want it to be the focal point of this room?). Plus, if it looks really hideous, it’ll stick out like a sore thumb you’ll be motivated to go back and replace it, reducing the risk of your janky placeholder assets accidentally making it into the final product.

Of course, every once in a while, everyone just falls in love with the placeholder asset so much that they keep it, like Kirby here. Yes, really.

Find Creative Alternative Uses for Assets - When deciding what assets to use in your game, it’s always good to remember: It doesn’t matter what the name says the asset is, but what your players think it is in-game. In other words, if you can’t find what you’re looking for in the asset library, try thinking outside the box and repurposing some other assets in different ways. When creating the garden area, I discovered there currently isn’t any dirt asset in the game I could use. However, from certain angles, the “moss covered rock” asset has a distinctly brown tint to it - clump enough of them together, and it makes for a good representation of a patch of soil! There aren’t any statues currently in the asset library, either, but any other asset can have a smart texture placed on them that lets you change their color completely. That Capitan Blackclaw statue? That really is Capitan Blackclaw, just with her animations turned off and her texture replaced with a gray one! Don’t feel limited to using assets solely for their “intended” purpose - as long as you can make it look like what you want, the actual objects used don’t matter.

Only Worry About What Your Players Can See - Every single asset that you add to your game increases the file size and load time of the entire package, which can result in a massive impact to overall performance. If you don’t want your players to have to wait five minutes to play a game that only runs at 15fps, you’ll want to be selective in just how many assets you use. A good rule of thumb: If your players can’t see it, you don’t need it. Got a building in the background that your player never gets close to? Don’t build the whole thing, just the front wall will do. Is your statue just floating in midair, but your player never sees the base of it (or lack thereof) in-game? Then don’t worry about it, just leave it floating! Your environments only need to look as complete as what your players can see. It may require some extensive playtesting to figure out exactly what you’re capable of catching a glimpse of in-game, but trust me, your graphics card will thank you for it.

From the Front: A majestic temple. From Behind: Uh… Where’s the back wall? Or foundations?

As long as you keep these three tips in mind, there really isn’t any right or wrong way to decorate your levels. Do you want to spend days putting in minute details in every aspect? Go for it. Do you prefer a more minimalistic approach that’s significantly quicker to put together? That’s fine, too! Any method is valid so long as you’re able to successfully capture the theming you’re aiming for. As for me, I felt just about ready to publish my game after finishing up the decorations. One final pass on optimization and playtesting later (I can’t stress this enough, you can never have too much playtesting), and I was uploading the game as you all have seen it to the Content Portal!

Conclusion
Okay, this article has gone on long enough and my editors are starting to cry silently in a corner over here. I hope you all enjoyed this brief(?) look into how I created Weasel Raceway, and that my insights and tips will help and inspire you as you create your own games. I’m looking forward to seeing what you guys come up with! Until then… Keep on creating!



Image Credits:
colleplanningtoday dot com, tvtropes dot org

Behind the Design: Weasel Raceway (Part 1)

Greetings, designers! Recently we saw the release of a new game to the Endless Mission Content Portal: Weasel Raceway. This game takes the gameplay seen in the Racer, but swaps out the cars for weasels racing on foot and sets the action on a whole new track themed around a tropical temple.

Oh, and did I mention it’s a foot race? Those little buggers can run fast.

Now, what if I told you that I was the one who created this game? Totally awesome, right (don’t answer that)? With the game out now, I decided it’d be cool to write up a little postmortem about this project. Where did the idea come from? What is my design process like? What challenges did I face while making this game, and how did I overcome them? How much of my blood was replaced with caffeine by the time I was done with this project? All these questions and more will be answered in this article!

It’s fine, I can stop at any time. Honest.

[h3]Humble Beginnings[/h3]
Every game begins with an idea. They can be a specific game mechanic you want to work around or a thematic element or message you want to express or even just “hey, wouldn’t it look really goofy if we did this?” The main thing to remember with ideas, though, is that they can come from anywhere. Legendary game designer Shigeru Miyamoto has spoken at great length about this, citing how even the most random parts of everyday life have served as inspiration when creating games. Forging through the woods in his backyard as a kid? The kind of open-world exploration he wanted to capture when creating the original Legend of Zelda. A nasty encounter with an angry dog that was tied to a post? The inspiration for the behavior and attack patterns of the Chain Chomp enemies in the Mario games. Watching ants work together to move stuff around while gardening? The origin of Pikmin. Miyamoto has always had a knack for finding game ideas in the most unlikely places, and it’s a skill that any budding designer should take the time to develop.

Still no word on what kind of horrific childhood trauma led to him creating this, however.

That’s not to say that every game idea has to have some sort of esoteric origin story, however. Sometimes, the inspiration for a game can simply come from another game. This was the case for Weasel Raceway, as the idea for this game came from… watching a livestream my coworkers did for The Endless Mission.

How meta.

[previewyoutube][/previewyoutube]
Wait a sec… That punk on the right owes me five bucks!

The stream is very informative and worth a full viewing, of course, but for the sake of this article, the highlight is at the two hour, ten minute mark: While experimenting with putting different visuals on the race car AI, they decide to plop in the weasel enemy from the platformer game. The end result? Absolutely friggin’ hilarious. A cartoony rodent flailing around frantically as he runs way faster than he has any right to, the nitro exhaust while boosting being lined up perfectly with his armpits… It left the entire stream in stitches.

It was upon seeing this that I realized: There’s potential here. Why leave it as a single character option when this could be the basis for an entire game? Could the inherent hilarity of this be enough to carry a whole game by itself?

I had to find out.

[h3]Laying the Groundwork[/h3]
So I had the basic idea: Racing game, but with weasels instead of cars. Now the big question was, where do I start? Well, we already have a built-in racing game template included with the game, and half of what made the idea so hilarious was that it involved swapping out models and literally nothing else so… why not just start with that?

Now, I know what some of you are already thinking: Isn’t that kinda cheating? I’m just taking the groundwork someone else laid out and using it for myself. Don’t “real” designers build everything from the ground up? And to this I say:

And speaking as both a designer and as someone who played Resident Evil 4, I can vouch that fighting the Regeneradors is less frightening than even the prospect of writing code.

Here’s the thing - There is zero shame in using someone else’s work as a starting point for your own. Video game designers will frequently reuse and share their resources so they don’t have to build everything from scratch every time. In fact, the entire point of game engines and game-making toolkits, from the Unreal Engine to Super Mario Maker, is to handle all the redundant busywork for designers so they can focus on the stuff that makes their creations unique. I could spend a month or two writing all the code necessary to even begin creating a racing game - avatar control, win/lose conditions, racing physics, AI behavior, etc. - or I could use the template that was already provided for anyone to use so I can instead spend my time creating new components that only my game will have. Why reinvent the wheel when I don’t have to?

Now, there are limits to this, of course. If someone hasn’t given you permission to use their stuff in your game, then yoinking it anyway is a pretty lousy thing to do (not to mention… ya know… usually illegal). Plus, sometimes it’s worth questioning the things that you’re borrowing to use in your game because they “have” to be there and this will save you time creating it yourself - trying to build a game without relying on an essential component of the genre can be a fascinating design challenge! But with all that said, if it’s an available resource for you to use that makes building your game easier, then there is nothing wrong or lazy about using it.

With that all out of the way… As I mentioned, The Endless Mission comes with a prebuilt racing game template for people to get started with. It has all the assets needed for a bare minimum racing game: Three selectable car types, a simple oval track (with boost pads), AI racers, power-ups, some basic sci-fi scenery, UI, and all the under-the-hood gameplay code needed for it to all work. Once I had this all out in my editor, I asked myself the first two questions anyone should ask when using prebuilt assets as a starting point:

“What components do I absolutely have to keep in order for the game to function the way I want it to?”

And

“What do I want to add or change to make this game uniquely my own?”

For the first question, I knew I wanted to keep the ability to select car types (even if they wouldn’t be “cars” per se), the AI racers, power-ups, UI, and code. As for the second, beyond the initial idea of swapping out cars for weasels, I wanted to create an original track for them to run around on and brand new scenery that would be more fitting for the weasels than flying ships and skyscrapers. The specifics of these answers would change over time (I discovered there were certain components of the UI I didn’t need to keep, and “new track and scenery” ended up being way more complex than it sounds), but this gave me the starting point I needed to begin working.

[h3]Swap and Go[/h3]
Given that it was the initial inspiration for the whole thing, the first thing I did was get to work swapping out the cars for weasels. In the livestream, they only gave the player an option to be a weasel while leaving the AI cars alone, but I knew I wanted to go all-in here. Everyone is weasels now!

“You always give us the strangest requests…” - Our Graphics Design Team

There are three different kinds of cars that both the player and the AI can use: Lightweight, Heavyweight, and Balanced. Conveniently, there are three versions of the weasel enemy as well: Bully, Guard, and Rabid. Now it was just a matter of figuring out which weasel should represent which car type. Bullies are the “default” weasel type, so it made sense to make them the Balanced racer. Guards have huge helmets that make them tougher - that felt pretty Heavyweight-ish. Rabid weasels are quick and jittery-looking, so they fit right into the zippy, Lightweight car type. The racing game template was built so that each AI (and the player) stored the coded behavior and model they use in completely separate fields, so removing just the physical appearance of each car and replacing it with a weasel while keeping all the code untouched and still fully-functional, was a trivial affair. Within five minutes, I had an army of weasels running around an oval racetrack. That was quick! Building this game was going to be easy!

[h3]Tracking Progress[/h3]
… Well, okay, maybe not that easy. Even with a powerful toolset like the Endless Mission, every game presents its own challenges while being created, and as a designer, it’s your job to tackle these challenges head-on.

For this game, the first challenge came in the form of the track itself. The Endless Mission currently uses a spline system for generating racetracks (that’s a fancy way of saying you can plot a line in the game world and the game will build a track for you that follows that line). However, while there are multiple texture/appearance options for tracks generated this way, they’re all sci-fi themed. I wanted something more akin to the tropical setting that the weasels are originally from, but to do that, I would have to forgo using the spline system entirely and instead use individual assets to craft the racetrack.

From scratch.

Piece by piece.

That highlighted asset? One asset out of nine that make up a single piece of custom-built track. There are seventy-five pieces like this that make up the entire track, and that’s not even counting ramps, boost pads, and the like.

It took a little while, but I was committed to the idea of making a custom track for this game. Thankfully, the use of grouping and saving my own assets locally helped out a lot here. Once I created one bit of track and saved it as a single asset, I could create as many copies of that as I liked to build the entire course. There were still plenty of challenges - making sure each piece of track lined up perfectly, realizing that I’d need to create a brand new type of track for something new I wanted to do, etc. - but once I had created enough assets, it felt a lot like a lot of track editors in older racing games where you plopped down track pieces one at a time to create a course.

Of course, this leads into the next question: What kind of course did I want to create? With the theme and the assets I was going with, the concept of racing through an ancient temple immediately sprang to mind. It’s a concept that’s seen many different interpretations in other racing games, so it would be fun to see what my own take on it could be.

If it’s good enough for both Mario Kart and Crash Team Racing, then it’s good enough for me.

That said, while I knew I wanted a track that would weave in and out of ruins, I decided to focus purely on the track first before worrying about any kind of buildings or props. Having the gameplay be fun and fair is a much higher priority than making sure the environment looks good, and it’s a lot easier to edit the theming to fit the track than it is to force the track to fit around the theming. As for how I designed the track, I just… built whatever came to mind. I had a few aspects I wanted to make sure were definitely included - the big jump at the very end was something I knew I had to have - but otherwise, I just experimented with whatever I thought would be an interesting piece of track to have next while making sure to not get too far away from the starting line (I’d have to make my way back there eventually, after all). I also considered what kind of interesting track elements I saw in other games that would fit well here - the series of 90 degree turns while going upward about halfway through the course is lifted directly from Papu’s Pyramid in Crash Team Racing, for instance.

It took some time, but after a whole lot of blood, sweat, and tears (well, okay, maybe just tears), I found myself looking at a fully crafted racetrack. That means it was time to start doing all the decorating, right? Well… Not quite.

Conclusion
Unfortunately, that’s all the time I have to ramble this week on the subject, but we’re far from done! Getting the track placed down is just the beginning of what I had to do to bring this game to life. Be sure to come back next week for the epic(?) finale!

Click here to read Part Two

--
Image Credits:
gifimage.net, mariowiki.com, knowyourmeme, thenintendovillage.com, Jungle Jim

Patch Notes 5/13/20


We're back with a brand new update featuring some quality of life improvements throughout the game.

Let us know in the comments or on Discord if you have any questions!

~ The Endlesss Mission Team

[h3]NEW![/h3]
User experience:
  • Redid the main menu to transition directly into the Global menu after login.
  • We now have a First Time Editor Scene (only for new users) that covers the basics of editor camera navigation the first time you open the editor.
  • We have swapped over to using asset bundles, which results in a smaller build size!
Editor:
  • Clicking on an entity or component reference will now highlight the referenced entity in the hierarchy!
  • Added tool for object snapping.
  • Added tool to customize the editor camera speed. This is especially useful when working on larger levels!
  • Introducing the tag system! This is a massively improved way of browsing the library, designed to help you find the content you are looking for! Tags are searchable and combinable.
  • Code tabs! You can now open and edit multiple tabs at once!
  • Added SimpleHealthEventHelper to set up damage and healing via events without scripting.
  • 3D text support! You can now quickly and easily drag in the "3D Text" object to your scene to add custom 3D text to your game. Choose font size, spacing options, etc!


[h3]IMPROVED![/h3]
Editor:
  • Cleaned up the inspector for Hackable Transform to take up less space depending on which options you are using.
  • Exposed several functions on Health controller for more accessibility to the event system.
  • Endless events now show the parameter name of the function you are calling, rather than a generic type name.
  • Endless event listeners can now be reordered properly and the remove button will always remove the last entry in the list.
  • Huge particle effect overhaul. Particle effects can now be previewed in the editor properly, including start, stop, and looping behaviors. As a result, we redid all the particles in the game, which may mean previous UGC games are now missing their effects, and need to be replaced. Check your games!
  • Updated editor tooltips for clarity, and added more tooltips to buttons that still needed them.
Optimization:
  • Massive optimizations to the Terminal scene, and the Platformer game assets. You should see increased performance in both areas!
  • Rework of the Adventure Mode camera system to allow for smoother Lens Mode target locking and de-locking!
  • Updated the hacking outline to be much more efficient resulting in large performance gains across the board!
Other:
  • Miscellaneous cleanup for asset consistency.
  • The intro can now be skipped immediately.


[h3]FIXED![/h3]
  • Fixed components sometimes not showing the enabled toggle when they should have been.
  • Fixed Racer avatar now respects "PlayerControlEnabled" correctly.
  • Fixed ALT + LMB will no longer deselect objects.
  • Fixed Sword Power Attack no longer gets stuck mid-swing.
  • Fixed an edge case with Ctrl + Z not always working.
  • Fixed the API calls for unfollowing a user or unvoting on a piece of content not firing correctly resulting in the action being canceled.
  • Fixed Object Mover: Ping Pong loop type now behaves as expected.
  • Fixed Racer End Screen now shows the best and worst lap time, even if you never finished the race.

Patch Notes 5/12/20


We're back with a brand new update featuring some quality of life improvements throughout the game.

Let us know in the comments or on Discord if you have any questions!

~ The Endlesss Mission Team

[h3]NEW![/h3]
User experience:
  • Redid the main menu to transition directly into the Global menu after login.
  • We now have a First Time Editor Scene (only for new users) that covers the basics of editor camera navigation the first time you open the editor.
  • We have swapped over to using asset bundles, which results in a smaller build size!
Editor:
  • Clicking on an entity or component reference will now highlight the referenced entity in the hierarchy!
  • Added tool for object snapping.
  • Added tool to customize the editor camera speed. This is especially useful when working on larger levels!
  • Introducing the tag system! This is a massively improved way of browsing the library, designed to help you find the content you are looking for! Tags are searchable and combinable.
  • Code tabs! You can now open and edit multiple tabs at once!
  • Added SimpleHealthEventHelper to set up damage and healing via events without scripting.
  • 3D text support! You can now quickly and easily drag in the "3D Text" object to your scene to add custom 3D text to your game. Choose font size, spacing options, etc!


[h3]IMPROVED![/h3]
Editor:
  • Cleaned up the inspector for Hackable Transform to take up less space depending on which options you are using.
  • Exposed several functions on Health controller for more accessibility to the event system.
  • Endless events now show the parameter name of the function you are calling, rather than a generic type name.
  • Endless event listeners can now be reordered properly and the remove button will always remove the last entry in the list.
  • Huge particle effect overhaul. Particle effects can now be previewed in the editor properly, including start, stop, and looping behaviors. As a result, we redid all the particles in the game, which may mean previous UGC games are now missing their effects, and need to be replaced. Check your games!
  • Updated editor tooltips for clarity, and added more tooltips to buttons that still needed them.
Optimization:
  • Massive optimizations to the Terminal scene, and the Platformer game assets. You should see increased performance in both areas!
  • Rework of the Adventure Mode camera system to allow for smoother Lens Mode target locking and de-locking!
  • Updated the hacking outline to be much more efficient resulting in large performance gains across the board!
Other:
  • Miscellaneous cleanup for asset consistency.
  • The intro can now be skipped immediately.


[h3]FIXED![/h3]
  • Fixed components sometimes not showing the enabled toggle when they should have been.
  • Fixed Racer avatar now respects "PlayerControlEnabled" correctly.
  • Fixed ALT + LMB will no longer deselect objects.
  • Fixed Sword Power Attack no longer gets stuck mid-swing.
  • Fixed an edge case with Ctrl + Z not always working.
  • Fixed the API calls for unfollowing a user or unvoting on a piece of content not firing correctly resulting in the action being canceled.
  • Fixed Object Mover: Ping Pong loop type now behaves as expected.
  • Fixed Racer End Screen now shows the best and worst lap time, even if you never finished the race.