I haven't prepared a proper write up on it with screenshots yet but tl;dr is that it's playable alll the way through but there's gonna be a bunch of stuff that looks unfinished (some layering, animation consistency etc). will fill in a proper description later.
JJXB
Recent community posts
Just finished this profile after a long time of on/off work. It's an indie metroidvania made by Chronicler of Legends (shoutout to them as their help in making sure that i could test on the full version was essential by the end). This should cover the entirety of the game apart from a couple of cutscenes near the end but I'd call this 99% done and unless i bugfix and come back for the couple of minor bits near the end, it's likely the final version.
Verified working with both full game and demo rom available HERE
sidenote: select and B will reset the camera.
Not posted one of these in a while.
0.1: 3dn file
*very basic at the moment*
1. All side scrolling stages up until just after the dam have something done in them.
2. None of the top down stages have been touched in this one yet
3. infinite lives cheat for all 4 characters is active within the profile by default (primarily for getting somewhere without major frustration for the purpose of making the profile). can be disabled by opening the 3dn in the maker, going to the scripting tab and in the script named "1" change the cheat_enabled variable to 0 instead of 1. will potentially look into making it activatable via some sort of inputs in the final profile if i ever get round to it.
*Why have i not put anything out in a long while?*
1. Inspiration. i hit a brick wall there.
2. Life. Moving house is stressful as is parenthood.
EDIT: i forgot someone else posted a profile for TMNT. but variety is the spice of life :D
Applying any scripts i have created:
1. Open the maker and your game, then go to the scripting tab in the gui.
2. open the file you're getting a piece of script from and copy/paste it into the main text window of the scripting tab. Then name your script in the name box and put an asterisk ( a * ) in the tags box to indicate to run this on any tag (I usually end up doing if statements in code to check for tags instead). then click on "New" and the new button should disappear and Adjust and Delete should appear instead along with the script in the list.
3. test the code. like in this example i copied and pasted in my UI code and then marked a single letter on the HUD as ui tagged (in this case, the Y from "ENEMY":
-----
In the future i will likely outline how to use a couple of the features of my scripts in more depth. in the meantime, experiment and mess around with my janky scripts.
Posted here in Profile Repository as I consider this complete. If I missed anything, anyone is welcome to make their own modifications (such as characters).
Edit:
CR00T_R0M made a modification to it that changes characters to 3D plus makes some colour tweaks and they had to pull down so i am rehosting that too
Main Issues:
1 - the indoor first person sections are straight up treated the same as the overworld right now.
2 - Only the first set of levels are anywhere near touched as the bk2 TAS didn't playback correctly for me in the bizhawk core
3 - I still haven't found an elegant/good way to fix up the trees so the treetops don't look odd on their own.
I'm sure there's a lot of other issues that i've missed in the post but i'm putting this out there for anyone else to try to work on if they feel up to trying it. if i do any updates to it i'll edit the post to say so however.
12/09/2020 Edit - updated with modifications by geod and metadata script.
Screenshot:
Video:
1. has an unfinished form of my rotation script that doesn't reset when changing scenes
2. some of the overhead looks weird right now due to patterns.
3. all Side scrolling levels have some reasonable level of 3d profiling and some minor pattern issues (played through with a TAS)
4. Should be playable throughout the entire game as long as you don't mind numbers 1 and 2 being factors.
12/09/2020 Edit - Added Metadata script
a simple profile i made partially to test some stuff i added to the UI script. turned out quite well so far.
Edit: while the video doesn't show it, i have now added 3D pieces. still gonna say it's WIP since i don't know how much else i can or should do until i get some feedback :)
12/09/2020 Edit - Updated to add Metadata Script
07/10/2020 Edit - Moved Letters to bottom of the board and Moved to Profile Repo.
-ROTATION-
This one gets it's own post. It takes some more explanation to do so. And it's tied in extensively with the UI script so if you want to try this, you need that too.
Since last posting this, i have simplified this down to what was previously called the "EMethod" and removed the CMethod that might have confused people.
It just rotates the camera to an appropriate angle and sets any sprites to have a 30 degree rotation. Sky code is complete enough that skyenable=1 will work but will still be buggy. I have also added in the ability to tag a shape with “skyt” and enable dynamic sky with dynamicsky=1, which is also wip.
I have also added in the ability to define camera resets. I’ll write this up later but if you wish to poke at it and try it yourself, it’s there.
CURRENT SCRIPT UPDATE: 10/05/2021 - Fixes and minor feature adds along with refactoring of ui boundary handling
So, you've read the documents and want some more examples of scripts to work with? This is the right topic for you!
TIPS:
1. If you are struggling to find a game to experiment with scripts (read: not as a serious profile), I would suggest that you try to use "Side Pocket" and go to practice. This gives you a good sandbox to not only explore shape features but also work on your knowledge of scripting in a time-unlimited manner.
2. Work environment. I personally use Notepad++ to do my scripting work because it has room for multiple file tabs. As such i have my reference files and 4 work files that allow me to have multiple scripts at the ready (example: in one tab i can have my UI script on it's own and another tab my rotation script on it's own for me to either work on adding features or to modify them per game). Plus working in notepad++ has the benefit of being able to set lua styling so you can see if anything is out of place.
DISCLAIMER:
Before you look at these, take into account:
1. These are not created by an expert (read: I ain't as good as geod at this)
2. These may have some weirdness (I created these for my use primarily but i am putting these out there as possible help for others)
3. They are subject to change and as such, if you grabbed a copy of the reference files one day, they may change within the next day (depending on how much I may or may not have done).
4. I am happy to take feedback/suggestions on these to make them less jank but i cannot guarantee how much i will be able to do in some circumstances.
WITH THAT IN MIND, THE SCRIPTS
Script_Ref_Main.txt
A - a base UI script that has the following features:
1. Automatic UI layering based on an "inGame" tag paired with ui threshhold values to define in renderspace where UI boundaries are.
2. *NEW! - WIP* UI Detection based on shape tags. To use, set uiautoenable=1, set uiautotype to the one you want (1 being shapes outside of the boundaries, 2 for inside the boundaries) and tag a shape at the edge of the UI border with either “bl” for the lower boundaries (referring to bottom left) and “ur” for the upper boundaries (referring to upper right)
3. Menu state tag (tag any shape with "menu") that auto-sets anything on screen as UI layer. useful for as the tag implies, menus.
4. Manual "ui" tag
5. Camera Lock function so camera view can be locked in place
6. Camera Reset function for use with anything that needs specific camera resets (example: a rotation script) - Kind of useless at the moment, might remove later.
7. UI X and Y Shift Variables and Switch vars. allows for anything UI (either tagged or boundary based) to be shifted on either the X or Y axis (Z axis possibly forthcoming)
8. UI Method switches. Allows for any "ui" elements of either type to be handled in one of two fashions: shape.UI definition *or* extra Z offset applied to bring it out of the main game screen.
9. (Temporary) A camera angle reset hotkey combo (NES Select and B together). a full list of possible NES button input reads available in Script_Ref_Small in case you cant to use it for your own purposes (example: activating cheats in some fashion)
B - Generic Layer Correction script:
Mainly built this to do minor things like possible alpha changes etc. not much here of note at the moment.
C - Rotation Script:
See Next Post.
D - Shape Location Detection
Explanation to be written up
There is no point in explaining Script_Ref_Small.txt as it is literally just a bunch of working script segments to refer to for things that might need good examples (such as ReadMem and WriteMem).
If you have any queries or feedback on these scripts, this thread will remain open to posts and I am available on Discord as both a moderator of the 3DSen Discord or directly with JJXB#0248 (Please try not to DM me every living moment pls :P I have a child and will sometimes be unavailable). Plus, you are free to modify these scripts in your profiles to add things (such as extra tag detects etc) to fit your needs.
I use the term "mostly done" because while i've gone through a large chunk of the game with a TAS and have done a couple of things the TAS missed (like the forest), there might be things i haven't caught or need to fix. be aware that this uses a rotation script for the overworld and as such, i am taking feedback on if this script is useful.
Edit 1 01/09/2020:
Modified to make the tree logs more clearly circular (read: pulled them further out)
Edit 2 12/09/2020:
Added Metadata Script
Edit 3 07/10/2020:
Okay, I might as well just call it done for people to use while waiting for the official profile to be rolled out. I'd still recommend to use the actual profile when it is available to play but this is just a different take on it from someone who isn't as good at profile creation.
is it at all possible to get the tag that is being read on a shape as a string on it's own via variable? Asking because i want to have the ability to have a tag be readable and to be able to read a number from the tag.
Example:
instead of doing
if shape:ContainsTag("Z30") then shape.Offset.z+=30 end
and making new tags in that vein for each microscopic change i might want to make, instead i want to tag something ZU60 and something else ZU30 and it'll add the 30 and 60 to each respective object as tagged. to do this i need to be able to read the tag that's being referenced at that moment, find the numbers in it, and then once i've been able to do that, convert the string number to an int number that i can then pass onto shape.Offset.z+=. but i can't read the tag that's referenced to do a string.match or string.find on it for numbers as far as i know unless it's undocumented.
if it's not possible to expose that tag to being read as a string whenever you invoke a shape:ContainsTag currently, may i humbly request that it be made possible since i assume in order to read the tag, you have to store the input for the ("") anyway and that it'd make it easier to do cleaner script code while also allowing for flexibility in tagging.
Modified it slightly to put the UI on the UI layer via scripting and to also shift the UI up to the top of the screen
if you don't want the UI at the top of the screen just go into the base script and change
"shape.Offset.y=200" to "--shape.Offset.y=200"
(yes, i do still read this place geod :P, life just gets in the way and i've seemingly run into enough random things on the WIP's i've posted that i can't solve at the moment)
i didn't put an excessive amount of time into the specific customization of some of the ground because i was more trying to get the actual layered effect on the objects working due to that being the hardest part. so only so much ground is done. but with my scripts in place for both a scrolling ground plane where appropriate and the objects, tweaking things is now down to tiles, patterns and tagging things right unless small issues pop up with the scripts themselves.
am i using it wrong? with Rad Racer i'm trying to get a clean UI setup but the roadside has a habit of being weird whenever the player crashes onto the side of the road. I've tried highlighting the offending tiles and making them a seperate pattern but it instantly reverts to being glitchy as soon as it gets chance. and it is starting to piss me off. i've been hammering away at this for a long time but each time i try to get anywhere with it, the same issue comes up.
Video example:
3DNesVR v2.1
Have been trying to work on some other projects but in my testing 3 games experience missing shapes:
Startropics (Dungeons) - FCEUX 3DNes
Startropics 2 (Dungeons) - FCEUX 3DNes
all 3 sets of screens taken in the same scenarios. so it appears your 3D shape algorithm is breaking somehow on these 3 games or that the algo isn't even getting the shapes from the emu portion of the code?
and another thing on startropics 1 and 2 is that the save feature ingame is broken so it says it is saving but it does not save at all.
Figured i'd throw my skills at something else that might be interesting with the scripting work i do. how's about turning a flat snooker game into a fully 3D one? if anyone wants to muck around any further then it's up to them but hey, nice to be able to use it on something more sedate. I did also do a chessmaster 3dn at one point but i'm gonna redo it.
Also: Check the scripts for improvement on how i positioned the Y/Z field.
I just got my iPega 9068 working again after some weirdness with the analogs and i was curious would phones and things like that be strong enough to support 3DNes and maybe the VR stuff via cardboard? Unity being on android should work fine so if there was a barrier it'd be more "would there be the hardware to run it" and "would you want to work on it?" (i understand if you wouldn't but i figured it'd be better to ask than not to ask)
glad to know my weird experiments on things helped spark some sort of solution, especially since i'm finding less weird stuff to experiment with that i know is doable as is (exerion being an odd thing to try and work with and solstice being an example of screwy tile work getting in the way of things)
this is just one of those ones that were the equivalent of "throw something until it sticks". and this one did work but i didn't want to upload it literally just after i had just uploaded chase H.Q. either way, this works well enough that you can probably just tweak bits and it'll be done.
also: don't try and take some games on (hint: solstice will be night on impossible at all because of it's tile arrangement but that will be another thread entirely).
Edit: Video!