03-04-2019, 04:17 PM
Here is another update! I started making a new version of the editor from scratch a few weeks ago and have been working on it pretty much every day since then. I still have a lot to do but I'm really happy with what I've got so far. The new version is a kind of combination of the other prototypes I made, so it includes both the visual unity editor and the cheat engine style "in game" editing that I used in the first command line version. I'm not gonna show much of the actual UI yet because it's constantly changing as I add and change features but it is a lot more advanced than the old version, it didn't actually take me very long to get back to the point I was at before and then I just kept going as I kept experimenting more and learning more about programming.
So, as I was attempting to do with the previous version, this one can open either a single IGZ file that's been extracted from a level, or you can open up the level PAK itself and choose which files to load into the editor. As I explained in my "level editing without a level editor" video (which I realise I haven't actually posted here yet so here it is: https://www.youtube.com/watch?v=-wmvIX75J40), not all coordinates in the game follow the exact same pattern, at the moment this editor will only load one type of coordinate (the type that's used for crates and other important things) but now that that's working great it should be easy to add the option to load more stuff. Here's what the editor looks like when you open Stormy Ascent and load every compatible IGZ file into it:
![[Image: 8Kb5IQB.jpg]](https://i.imgur.com/8Kb5IQB.jpg)
If you've been following my progress with this project from the start then you'll hopefully be happy to know that it only takes a few seconds to open the editor with all those files selected, because back when I first started each one would probably have taken about 30 minutes. And every one of those crates represents something in the level that can be repositioned using this editor. Obviously the idea I had to import level geometry from the PS1 games to use as a guideline was completely ridiculous and not at all practical, but I've still tried to include features to make it easier to identify what different coordinates represent. All the coordinates in these files also contain information about what type of object those coordinates belong to, so even though I still haven't found a way to identify something just from looking at the code, it is easy to tell whether or not two objects are the same type of object, if that makes sense. So I've added a feature to the editor that will let you label an object with a description so you know what it is, and then automatically apply that same label to all other objects from that file that are of the same type. It also gives you the option to apply an icon to that object which is useful for things like crates, and again the icon you choose will automatically be applied to every other crate of the same type:
![[Image: VUrNC2G.jpg]](https://i.imgur.com/VUrNC2G.jpg)
But the big feature I've been working on is the option to connect the editor to the game. You can click a button that will launch the game to whatever level you're currently editing, and then when you move stuff around in the editor you can also choose to apply those new coordinates to the game, so you can preview your changes and test your custom level while you're working on it. I've added options for camera tracking so you can control the game camera with the editor and vice versa, which makes it easier to work out what all of the objects in the editor actually represent. You can then go one step further and attach the game window to the editor in a kind of overlay mode, which looks like this:
![[Image: mk0N7ZC.jpg]](https://i.imgur.com/mk0N7ZC.jpg)
All of the camera tracking modes still work when the game is attached like this, the above image shows the "track game camera" option, where the editor will follow the game camera as you play through the level. Then there's the opposite, where moving the editor camera will also move the game camera, so you can look around without having to do all the tricky platforming:
![[Image: 3ixEaWM.jpg]](https://i.imgur.com/3ixEaWM.jpg)
Because of the way lighting etc works in the game it's not always easy to see what's going on in a level while you're doing that, so I included a sort of light switch option to disable the game's lighting effects which usually makes things clearer:
![[Image: oMHpJe7.jpg]](https://i.imgur.com/oMHpJe7.jpg)
This doesn't always work in every level, the effect is just created by teleporting the player way above the level and there are some levels where I haven't been able to change the player position, but more on that later. There's another camera tracking option which will follow the player instead of the normal game camera, this can be useful in situations where the game camera has broken due to respawning or teleporting and means you can keep playing the level without worrying about that, or just find Crash/Coco if they've disappeared off screen:
![[Image: j4A4uvh.gif]](https://i.imgur.com/j4A4uvh.gif)
And if those crate overlays get in the way you can hide any of the IGZ files that have been loaded, they basically work like photoshop layers. You can also set the opacity of the overlay to whatever you want, to either make it easier to spot objects from further away or easier to see what's going on in-game underneath them:
![[Image: 1jbe0Ui.jpg]](https://i.imgur.com/1jbe0Ui.jpg)
![[Image: mWDPikK.jpg]](https://i.imgur.com/mWDPikK.jpg)
There's a few other features that have been carried over from the prototype editors like teleporting the player to an object, or teleporting an object to the player's current location, or instantly moving the camera to any object you want to find quickly. And I've included two different methods of moving objects around in-game while you're connected. The first is a "fast update", which works by editing the game's memory at the point where it initially loads the coordinate data from, and then respawning the player (without losing a life because a game over would break everything). The second method is basically an automated version of the process I showed in my level editing video, where every occurrence of that object's coordinates will be replaced with the new set. This will usually only update the object's visual location and its physical hitboxes won't change unless you die, but in the levels where I haven't been able to edit the player position (which is how the respawn system works - just teleports the player OOB to kill them and then instantly returns them to the point they were at before) the "fast" method will only work if the player manually kills themselves, and in some levels like the motorbike levels that's not even really possible, without lots of other modding, so this is the only way to see the changes in-game. Of course once you save your custom level and patch it into the game properly everything will be in whatever position you moved it to.
Speaking of patching, the current system saves a custom level as a single file (.ard obviously) which can apply all of your modifications in one go, plus any extra files you choose to add to your level (if you have any custom music or textures etc you can add them to the level with this). But no point getting too much into that yet while there's still so much work to do. Just wanted to show that I am actually making some progress with this thing and didn't feel like making another 40 minute video about something that's still not ready to release. But it will be soon hopefully! Many thanks to Neo_Kesha for helping me with the PAK normalisation stuff.
So, as I was attempting to do with the previous version, this one can open either a single IGZ file that's been extracted from a level, or you can open up the level PAK itself and choose which files to load into the editor. As I explained in my "level editing without a level editor" video (which I realise I haven't actually posted here yet so here it is: https://www.youtube.com/watch?v=-wmvIX75J40), not all coordinates in the game follow the exact same pattern, at the moment this editor will only load one type of coordinate (the type that's used for crates and other important things) but now that that's working great it should be easy to add the option to load more stuff. Here's what the editor looks like when you open Stormy Ascent and load every compatible IGZ file into it:
![[Image: 8Kb5IQB.jpg]](https://i.imgur.com/8Kb5IQB.jpg)
If you've been following my progress with this project from the start then you'll hopefully be happy to know that it only takes a few seconds to open the editor with all those files selected, because back when I first started each one would probably have taken about 30 minutes. And every one of those crates represents something in the level that can be repositioned using this editor. Obviously the idea I had to import level geometry from the PS1 games to use as a guideline was completely ridiculous and not at all practical, but I've still tried to include features to make it easier to identify what different coordinates represent. All the coordinates in these files also contain information about what type of object those coordinates belong to, so even though I still haven't found a way to identify something just from looking at the code, it is easy to tell whether or not two objects are the same type of object, if that makes sense. So I've added a feature to the editor that will let you label an object with a description so you know what it is, and then automatically apply that same label to all other objects from that file that are of the same type. It also gives you the option to apply an icon to that object which is useful for things like crates, and again the icon you choose will automatically be applied to every other crate of the same type:
![[Image: VUrNC2G.jpg]](https://i.imgur.com/VUrNC2G.jpg)
But the big feature I've been working on is the option to connect the editor to the game. You can click a button that will launch the game to whatever level you're currently editing, and then when you move stuff around in the editor you can also choose to apply those new coordinates to the game, so you can preview your changes and test your custom level while you're working on it. I've added options for camera tracking so you can control the game camera with the editor and vice versa, which makes it easier to work out what all of the objects in the editor actually represent. You can then go one step further and attach the game window to the editor in a kind of overlay mode, which looks like this:
![[Image: mk0N7ZC.jpg]](https://i.imgur.com/mk0N7ZC.jpg)
All of the camera tracking modes still work when the game is attached like this, the above image shows the "track game camera" option, where the editor will follow the game camera as you play through the level. Then there's the opposite, where moving the editor camera will also move the game camera, so you can look around without having to do all the tricky platforming:
![[Image: 3ixEaWM.jpg]](https://i.imgur.com/3ixEaWM.jpg)
Because of the way lighting etc works in the game it's not always easy to see what's going on in a level while you're doing that, so I included a sort of light switch option to disable the game's lighting effects which usually makes things clearer:
![[Image: oMHpJe7.jpg]](https://i.imgur.com/oMHpJe7.jpg)
This doesn't always work in every level, the effect is just created by teleporting the player way above the level and there are some levels where I haven't been able to change the player position, but more on that later. There's another camera tracking option which will follow the player instead of the normal game camera, this can be useful in situations where the game camera has broken due to respawning or teleporting and means you can keep playing the level without worrying about that, or just find Crash/Coco if they've disappeared off screen:
![[Image: j4A4uvh.gif]](https://i.imgur.com/j4A4uvh.gif)
And if those crate overlays get in the way you can hide any of the IGZ files that have been loaded, they basically work like photoshop layers. You can also set the opacity of the overlay to whatever you want, to either make it easier to spot objects from further away or easier to see what's going on in-game underneath them:
![[Image: 1jbe0Ui.jpg]](https://i.imgur.com/1jbe0Ui.jpg)
![[Image: mWDPikK.jpg]](https://i.imgur.com/mWDPikK.jpg)
There's a few other features that have been carried over from the prototype editors like teleporting the player to an object, or teleporting an object to the player's current location, or instantly moving the camera to any object you want to find quickly. And I've included two different methods of moving objects around in-game while you're connected. The first is a "fast update", which works by editing the game's memory at the point where it initially loads the coordinate data from, and then respawning the player (without losing a life because a game over would break everything). The second method is basically an automated version of the process I showed in my level editing video, where every occurrence of that object's coordinates will be replaced with the new set. This will usually only update the object's visual location and its physical hitboxes won't change unless you die, but in the levels where I haven't been able to edit the player position (which is how the respawn system works - just teleports the player OOB to kill them and then instantly returns them to the point they were at before) the "fast" method will only work if the player manually kills themselves, and in some levels like the motorbike levels that's not even really possible, without lots of other modding, so this is the only way to see the changes in-game. Of course once you save your custom level and patch it into the game properly everything will be in whatever position you moved it to.
Speaking of patching, the current system saves a custom level as a single file (.ard obviously) which can apply all of your modifications in one go, plus any extra files you choose to add to your level (if you have any custom music or textures etc you can add them to the level with this). But no point getting too much into that yet while there's still so much work to do. Just wanted to show that I am actually making some progress with this thing and didn't feel like making another 40 minute video about something that's still not ready to release. But it will be soon hopefully! Many thanks to Neo_Kesha for helping me with the PAK normalisation stuff.