Just wanted to let everyone know that today the second patch for Beta 4 is being posted.
Download page is the usual again. If you would like to download only the changes since an early version of Beta 4, use the Patch 2 download. If you’re new and downloading for the first time, the main download now includes the patch.
This patch is a bit bigger than the initial Patch 1 to Beta 4, with a variety of bug fixes and various other quality-of-life improvements. You can check the changelog for the full details as normal. It shows the new updates in Patch 2 at the start. We did our best to fix known issues, but of course as is normal with development there could be remaining issues, so please let us know if there seem to be any problems! Have fun!
Today we’d like to bring you the first patch for Beta 4.
Download page is the usual. If you would like to download only the changes, use the hotfix button. If you’re new and downloading for the first time, the main download now includes the hotfix, too! Nifty!
I say “first patch”, because throughout the past week we haven’t quite been able to sort out all the issues you helpfully told us about. We did, however, catch the most severe ones, and have updated the changelog with a new section at the top detailing what has changed. A couple of things were unfortunately impossible for us to replicate directly, so if we missed fixing them despite our best efforts, please let us know!
The remaining issues we heard about but haven’t resolved yet can be found on the Progress Sheet. Another patch addressing these ought to be available whenever we’re done smashing those bugs!
SMBX2b4 is the newest stable release of SMBX2, including all the features from the preview builds MAGLX3 and PAL, with new fixes and features on top.
The specifications of the software can be found in the slightly-updated handbook included in the download. You can download SMBX2b4 here. An elaborate list of updates can be found here. Please report any bugs you find either on the SMBX forums topic or directly in the codehaus discord server. Thank you!
Below you will find a brief overview over how to handle various potentially critical changes (highlighted in yellow on the changelog).
HOW TO UPDATE
If you have been making levels on the previous preview build and find inconsistencies, here is what you can do in various situations:
All my NPC packs broke because of what you did to Extra Settings!!!
Sorry! Won’t happen again. We dealt with some weaknesses of the extra settings system and now they’re in a good spot. Making ID-agnostic extra settings required us to change the structure to avoid conflicts with variable names. While previously the settings were all put into npc.data._basegame despite not being _basegame variables, you can now find them in npc.data._settings for the ID-specific settings, and npc.data._settings._global for cross-id settings. Also! No extra settings value will ever be nil anymore, so the default value of your extra settings file now matters more than ever!
If you’re not a developer of NPC packs and all this talk went right over your head, please request the makers of the packs you’re using to update their packs to the new system. Implementing the change, although unfortunately a hassle we couldn’t avoid, ought to take no more than a couple of minutes. For more information see the previous blog post.
I have previously loaded scripts from the scripts/npcs/ and scripts/blocks/ directories.
Due to the move to the npc-n and block-n system, a lot of NPC and Block files were either moved or removed. This change in structure is one-time and we have now completed the move to the new system! Regardless, you will have to rewrite at least some of your code. You are likely to find what you need in the scripts/npcs/ai directory or scripts/blocks/ai directory, where all common behaviours are now located. If you cannot find what you need, take a closer look at the npc-n/block-n file of a basegame entity sharing the behaviour you were emulating. You can copy that file over and edit values where necessary to achieve the same result your code had before.
I have previously relied on newblocks.lua.
Now that newblocks no longer exists and blocks use the same system as NPCs, please look into rewriting your block code in accordance with the block-n system. Chances are, you will see a performance boost after doing so, too. Especially if it relied on onCollideBlock!
The new isheavy flag is breaking setups in one of my levels.
The isheavy config flag can be disabled on a per-id basis by putting “isheavy=false” (without the quotes) into a npc-n.txt file, where n is the ID of the NPC that’s causing trouble.
Springs no longer bounce essential noblockcollision NPCs!
You can add NPC IDs to the spring whitelists by loading springs.lua and calling the springs.whitelist(id, type) function, where “id” is the ID to whitelist and “type” is the type of spring to whitelist from. If you leave this empty, it whitelists for all springs. The default types are “UP” and “SIDE”.
Why does the NPC passthrough block no longer work in multiplayer?
Previously, there was a bug where NPC passthrough blocks would react weirdly to all thrown NPCs. While fixing that bug, we unfortunately had to temporarily break multiplayer support on that block. Multiplayer support will return in a future update, when we make sure all characters and obstacles work with multiplayer (which is currently not yet possible). Please keep an eye out! I hope the current behaviour of the block ends up being more benefitial than harmful to your levels.
For further issues, please take a look at the highlighted sections in the patch notes. There are some things highlighted that are self-explanatory in how they can be resolved, so I didn’t touch upon them here.
Due to the confusing names of preview builds, with this release we are trying out a new, consistent version numbering system. With the new system, beta versions will be prefixed with a b (e.g. 2.0.0.b3 for Beta 3), and preview versions with a p (e.g. 2.0.0.b4.p2 for PAL). Patches and hotfix releases will also have their own version number, and it will be possible to check your version number in Lua. Hopefully this should help make things a bit less confusing, since everything will use a consistent numbering scheme.
As of the new system, this version is 2.0.0.b4, and the next major release will be 2.0.0. That’s right: the full release of the engine. There will be no Beta 5.
We have also rewritten the launcher update check code a little so you can decide what severity of updates you would like to receive notifications for – If you’re happy developing your episode for 2.0.0 you’re probably not interested in half-working shenanigans from the 2.0.1p preview builds.
I hope you enjoy what we have made for you today! Thank you for reading and have a great time.
Hey, today I want to share with you some changes coming in Beta 4 that can break compatibility with NPC packs made on the PAL and MAGLX3 builds. If you have developed some of those packs (like I have), please pay attention!
The changes are all related to the editor “extra settings” framework, with which NPCs can be customized on a per-entity basis. You might’ve seen it on Boo Circles, or the Fire Snake.
So, I have good news and bad news. The good news is that we have expanded the extra settings framework further to be even more useful. Most importantly, we added a way to create cross-ID extra settings, which is insanely useful for episodes that wanna have settings to be able to give any NPC imaginable a mustache. Yes, even the bloopers! With just one extra settings file! The bad news is that in order to do this we had to adjust the way the variables are stored in lua. Here’s a brief overview over what’s changed:
So, let me explain. Instead of npc.data._basegame, you will now have to use npc.data._settings to access the extra settings variables. Simple enough! There is a second change, though. It’s a little more subtle: Previously, if someone didn’t adjust the extra settings value in the editor, the field would not be saved to the file and the value would be nil. This can no longer be the case. The middle fire snake actually has a length of 4 according to the save file. If you relied on extra settings being nil anywhere, this needs to change. One example of NPCs relying on nil would be for cases where an extra settings field overwrote a NPC config default variable. Some basegame NPCs that did this now use a checkbox to toggle a boolean that controls whether the fields below should do anything in the code, or if the defaults should be used instead.
If you would like to be prepared for the update when it comes out later this month, take a couple minutes out of your day to upload an alternative version of your NPC packs that have this change implemented to your NPC pack threads on the forums. It’s a quick adjustment that ensures your NPC packs will stay compatible forever, hooray!
Thanks for reading. I hope you’re looking forward to Beta 4!
I also have some ceral as an apology for breaking your packs!
Wow it’s been a long time since SMBX2 Beta 3, and while SMBX2mx3 and SMBX2 PAL have since been released, it’s about time we got a proper version, right?
We recently announced that SMBX2 b4 will be released in January 2020! We’ve also released a trailer to show off some (but far from all) of the new stuff!
So what’s changed since SMBX2 PAL?
First up, a lot of bugfixes have been made, meaning that SMBX2 b4 will be suitable for releasing episodes again! On top of that, there are a few new blocks, and a lot more stuff is accessible in the editor now. You can now make dark sections, level timers, visual effects, weather, all without a single line of Lua!
We’ve also completely overhauled the launcher, and added a bunch of new tools and settings. We’ll have a full changelog published alongside the release, so be sure to take a look yourself!
So when is this being released?
As we said, the release is scheduled for January, so it’ll be some time within the next month! You’ll have to wait and see for the exact date, but I hope you’ll look forward to it nonetheless!
SMBX2pal is a preview build of SMBX2b4, with a mostly complete feature-set, that’s a little rough around the edges. Wait… the SMBX2mx3 build was already that, so what changed?
The SMBX2 MAGLX3 PAL release addresses various issues found within the basic MAGLX3 build. It’s also the version that will be used by the judges for judging the levels of the contest. If you are a participant and worry that your level has become unbeatable in the process: Don’t worry! We took care of that ahead of time. All the levels work as intended!
The specifications of the software can be found in the slightly-updated handbook included in the download. You can download SMBX2pal here. An elaborate list of updates can be found here. Please report any bugs you find either on the SMBX forums topic or directly in the codehaus discord server. Thank you and please enjoy!
SMBX2mx3 is a preview build of SMBX2b4, with a mostly complete feature-set, that’s a little rough around the edges. The specifications of the software can be found in the handbook included in the download. The build’s primary purpose is for it to be used by the MAGLX3 Level Contest, hence mx3. You can download SMBX2mx3 here and, if you’re reading this before the contest deadline, you can sign up to MAGLX3 here. Below is an abridged list of changes and new additions. If you find a bug, please report it in this topic, and we’ll see to get it fixed for SMBX2b4’s release.
Throughout these lists, the most important features are bolded.
The default format for level files is now .lvlx.
Lunadll.lua and Lunaworld.lua have been standardized to luna.lua for both. The old names still work.
Lunaoverworld.lua has been simplified to map.lua. The old name still works.
Characters removed: Juni, Princess Rinka
Certain Character Demo Stages are being recreated.
Tweaks to Uncle Broadsword and Bowser to improve game feel
Wario has received a redesign. Go give him a try!
Mega Man now sports his 16-bit look by default.
Removed unnecessary costumes.
Revamped Mario Challenge aesthetic
The amount of built-in episodes has been reduced to decrease package size.
All sprites now use .png by default. Gif files are still compatible, but will also still need masks.
Updated visuals of sizeables and the SMB3 cave tileset.
Tileset Itemboxes in the Editor have gotten a facelift.
The Testing Menu has been enhanced.
These features will not require a single line of lua.
The ID range of 751-1000 for Blocks, BGOs, NPCs and Effects are available for personal use. Read more about this feature and “NPC Duplication” in the handbook.
BGOs, Backgrounds and Effects now have configuration support. Specifications can be found in the handbook.
Added various new NPC codes.
Added hundreds of new Blocks and NPCs, dozens of new Effects and BGOs, and some Backgrounds.
Two-Way Warps in the Editor work.
Legacy libraries now throw a warning when used and will be removed in Beta 5 or later
These features require at least one line of lua.
Using loadscreen.lua you can now customize loading screens for your episode.
The Data class has been deprecated. Save data handling is now done through the global tables SaveData and GameData.
You can now write and use shaders using GLSL and the openGL drawing functions.
Using map3d.lua you can make your world map render in a 3D style.
You can add a darkness effect to your level using darkness.lua
Lineguides have been enhanced and you can add your own NPCs to the list of lineguided NPCs.
Orbits.lua lets you create NPCs moving around an anchor in a circular motion.
Switchcolors.lua lets you define your own switch colours.
Timer.lua is the timer library used by basegame elements. Enabling it activates the Green Berry NPC’s function, too.
Actorclass.lua lets you create actors for cutscenes.
Animatx2.lua makes complex animation cycles easier.
Click.lua lets you handle mouse input.
Handycam.lua helps with complex camera control.
Pblock.lua exists, serving as a mirror to pnpc.lua, just for blocks.
Textplus.lua is the replacement to textblox.lua
Lib3d.lua is a 3D renderer for levels, allowing for levels with 3D visuals.
Spline.lua lets you create and make objects move along splines.
Some of the curious bugs among you must’ve noticed a little bit of a revamp happening to our To-Do list last week. As we move closer to release we decided to clearly distinguish between what’s necessary and what would be nice to have for the release, so that we can make decisions about what we might have to cut. It’s still a beta, so there will always be more opportunities, after all! But before I go into detail about those, I want to give a small update on the things happening.
The images in this post are largely unrelated to the texts below, I just figured it would be nice to have a couple things to look at in addition to words to read. They’re from various testing sessions, showcasing some fun interactions.
WOULDN’T IT BE COOL IF REZNOR WORKED?
Over the past months, the main topic of the Imperfections and Interactions post was being worked on – checking the imperfections of all newly added elements and making sure they work. The vast majority of this work is now completed, meaning that when the update releases, you won’t run into a game-breaking error when trying to use a large number of new additions! Hooray!
The exception right now are interactions between new npcs and other new npcs which, while not game-breaking, are awaiting a piece of new tech which will likely not be ready for release (and would delay release by a couple more months). It’s something to be wary of, but nothing to be staying away from new npcs for.
WOULDN’T IT BE COOL IF REZNOR CHASED YOU?
Another feature that will likely not be quite ready for release is easy NPC editing. In the future, all new basegame NPCs will be loaded through “npc-id.lua” files, where “id” is the ID of the NPC. Changing the name of the file will be enough to create a duplicate of the NPC’s behaviour for local use! No more “unloading” shenanigans like with Beta 3! In addition to this, having a local copy of, say, npc-301.lua (Thwimp) will cause both the basegame file as well as the local file to apply their code in parallel! This means that you can mod the Thwimp without copying all of its code over by just making a file with the correct name.
I’m trying port as many NPCs to this system as possible for release, but there is a high chance it won’t be ready for all of them yet.
THE NPC THINGS REMAINING
While most NPCs are ready, there are a few which still need some bugs ironed out. In particular, lineguided NPCs are the last NPC-related hurdle and are being worked on in parallel to all remaining issues.
THE PERFORMANCE THINGS REMAINING
A few things need a bit of a restructure in order to be more performant overall. You might have noticed in SMBX2b3 that new blocks in particular were very prone to slowdown when used in bulk. Stuff like that is something we will need to address sooner or later, and we want to take care of it sooner so that it doesn’t become a bottleneck that makes designing with these new tools unfun.
THE LITTLE THINGS REMAINING
Beyond the biggest hurdle of “performance”, there are a couple minor errors remaining in included episodes, editor preferences or factual errors in our documents which we’re working on to resolve. Little stuff that shouldn’t take long to resolve but is still important to sort out.
We’re not yet confident that development can continue at a steady speed until release, so we don’t wanna pin anything down just yet. The moment we’re ready to share a release date, though, it will be immediately announced alongside a trailer and a new blog post. It’ll be impossible to miss!
While there hasn’t been a blog post in a while, that doesn’t mean we’ve just been dormant! A lot of work in areas outlined in the last post has happened, and we’re just not at the next big milestone yet. I figured I’d provide an update anyway to showcase some of the stuff that’s happened in more detail.
The largest bulk of progress that happened was in areas outlined in the last post – going through every element we added and making sure it works well and doesn’t suddenly break when someone tries to use it in unconventional ways. Not much more to describe about it, so I’ll shut my mouth now and let the gifs speak for themselves. These are only a couple of the ways in which new elements can be used in Beta 4:
Some NPCs expose a couple of configurations about them to the editor, letting you change their settings per-instance. An example is the fire snake shown above, which can have its length adjusted. Other examples are the SMW minigame cloud which lets you configure how many coins it throws, and the SMW Bowser statue which has a configurable volley of fireballs. The latter is included in another gif below. These settings will only be available in .lvlx level files, which will be the standard starting with Beta 4. Don’t worry, all .lvl files will still be perfectly functional.
Very common checks we are doing are against the reserve item box, generators, held and thrown state, as well as interactions of NPCs with other NPCs and blocks. The goal is to make all of them possible for all NPCs included. I hope you will check them all out and find cool things you can do with them!
We’re also beefing up some older elements. The new blocks of Beta 3 didn’t always support contained NPCs, for example. There was some room for improvement which we’ve now used. That isn’t to say the old elements were weak. See it more as a Power-Up for Beta 3 elements.
The above gif is from my own testing and tweaking of these elements. The others are compilation of some of these results.
(debugging of Stretches)
The goal is that people don’t have to worry about any crashes when using SMBX in creative ways, and I hope you understand the long development time that comes as a result of this.
I think it’s about time we show what’s going on behind the scenes and state how we’re gonna swing back around to a release from where we are. It’s nothing to be worried about, just something that isn’t a trivial task.
Currently, we have implemented or done great progress on just about every new end-user feature we want in the beta 4 update. The big hurdle ahead of us is ironing out all bugs that exist within that content. We’re working on a massive checklist for NPCs which represents the biggest bulk of remaining work, which with just about 200 NPCs to check is going to take a bit of time.
There are a few more features which aren’t quite ripe yet, such as effect.txt files and a new comprehensive documentation, but most of the tasks on our Todo-list are either of relatively small scope, or tie into the NPC checklist in one way or another.
Make sure to keep an eye out for these lists if you wanna see where we’re at. For now, though, let me fill you in on a few things that happened since I last posted gifs here:
NEW NEAT THINGS
The job of making everything compatible with everything spawns some really exciting interactions. Grrrols and the Veggie Buster NPC shown in the video at the beginning have to be my personal favourite NPCs right now, purely because of how ridiculously fun they are to use. You can hold Grrrols in front of you like sawblades, and become unstoppable! Unless a bigger Grrrol comes along…
One thing you might notice in the gif above is that Grrrols and Monty Moles have their death effects! Some of you noticed in previous posts that death effects for certain NPCs weren’t looking right or were outright missing. Well, we fixed that! New NPCs actually already support effect.txt files, too!
In addition to the powerup blocks from Beta 3, we now have powerup filter blocks! These blocks immediately set your powerup, and there are also variants to filter your mount or held item. If you don’t want players carrying something further than intended, these are a great choice.
As you can see, the star blocks from Beta 3 can now also contain enemies! We have corrected the spacial anomalies which prevented this from happening previously. And yes, Wigglers now wear their pretty flowers, too.
The Beta 3 ice block now has a hot counterpart. Instead of being slippery, it’s harmful unless carefully approached with an ice flower. And it can be destroyed by various cold things, just like the ice block can be destroyed by hot things.
I might share more cool interactions and mechanics we create in a later blog post, but that’s it for now. Make sure to join the codehaus discord if you want to talk to us or want to see developer discussion directly.