Works for me in Firefox and in Chromium - do you see any errors in the Javascript console?
It does take a while to load the first time though.
Haha, I should have watched the gifs before playing it. I beat the game, but didn’t use the infinite portals mechanic at the point in the gif, but instead clumsily “portalled” my way first to the room below the 0, then to the spiky room to the left, then up, then to the right to finally get the thing.
I only really learned about that mechanic (i.e. that these things are breakable based on player speed, and not invisible switch triggers or similar) a bit later where infinite portalling was actually required.
Otherwise, great job! The difficulty curve is a bit weird - IMHO the very last room (where you have to Sonic-jump “backwards” via portalling) is way too difficult compared to the ones before, it took me like 15 minutes to finally press the right buttons at the right time there, in many times with a jump I AM VERY SURE I PRESSED simply not registering as I was apparently too close to the edge already.
I definitely love how this shows how even just controlled screenwrapping is a superpower. I mean, technically this game doesn’t do much, this could be a rather simple SMW romhack - however the fact that it’s not allows to see a bit outside the “wrap rectangle”, and is simply more fun to explore the mechanics that way.
Thank you for the feedback.
I actually agree the acceleration behavior is odd compared to current platformers. I modelled the behavior after Super Mario Bros. 1, which definitely both feel “slippery” compared to anything current. Maybe I should have rather used e.g. Commander Keen 4’s physics as a baseline - not sure.
There currently is work on an alternate “world” in the game (think of a second game in it) - I wonder if different physics constants (in particular both stronger acceleration and friction) should be used there. I am going to bring that up with its developer.
Oh, I am definitely OK with that.
You can see the “intended” solutions here (but it’s kinda a spoiler): https://youtu.be/Bn0o1hITR1A?si=te0XmEqcKFnEErm2&t=682
However, there are some more efficient ways of doing these things.
Alternatively, if you want to just learn the ideas of “platform resource management”, go back to the Anti-Hub and try to solve The Butterfly Effect (which is the middle exit from there). Once you can solve that one, you probably should be able to solve the ending.
Well, you can just put the platform on the switch and walk through.
Which will give you a preview of this section.
The actual puzzle is to get to this place with two platforms, put one on the switch and walk through the gate with the other. A lot of the rooms before this one tried to take away your extra platform - so trace back and see where you lost one that you didn’t need to lose.
Some rooms are connected to themselves in a mirrored form, and every checkpoint remembers which orientation you last touched it (indicated on the map by an x or + icon).
To get it back to normal, go into Stop and Stair, walk into its mirrored form, then try finding a way to get back to Leap of Faith. That’ll do it.
This is, sadly, normal for any new version, as it always takes a few days for antivirus software to know it.
I recommend you wait a few days for your software to update, then try again.
Now that a week has passed, only one scanner still detects it: Trapmine, as “Suspicious.low.ml.score” which is a generic detection that basically means nothing, as it’s just some random machine learning algorithm probably detects the Go programming language as something unusual.
Good job :) honestly: because it’s IMHO too “weird” to do this, and I did not want to put a note mandatory for “all notes” runs there.
Could make a wall picture though that only appears when taking that path… gonna think about that.
But why were you exiting there, where you trying to steal Christmas? ;)
No, it is intentionally not allowed to pause and resume, to prevent “pausebuffering” exploits.
However, if you are in a “safe” place and not just pausebuffering, you should be able to alt-tab out of the game which will also pause everything (but if you do that within a tight platforming section, you’ll likely be unable to press buttons in time and fall down).
If you are here with a platform, you do not need to press the buttons at all and can pass through easily.
If you have no platform, you can still get through this (note that there are two rows of appear blocks, so you can avoid pressing the button where needed).
The solution to the game, of course, is based on being here while holding a platform. The sections before have tried stealing the platform from you, try getting through the gauntlet while still keeping one!
That is actually an interesting point. I actually agree the physics could be crisper, but I tried to orient it at retro games and e.g. the original Super Mario Bros. 1 is much more slippery. I tried to go for a feel comparable to Super Mario Bros. 3 and Super Mario World, but maybe I should rather have gone with much higher ground friction, like e.g. in Commander Keen 4 or Super Mario Maker.
Having said that, I have tried playing the game with somewhat different adjustments there, and even making ground friction and acceleration really high - essentially removing all the “ice” effect - does not make it much easier, no matter whether on desktop with keyboard or on mobile with touchscreen.
It is intentional that cheats disable saving and there is no intended way around that. Editing the save file also is not allowed and the game detects if you have tampered with it. Obviously you could get around that, given the game is open source, but let’s try to not cheat and see if we can get you past the part another way.
The good news is, you don’t need to beat this part. From The Anti-Hub there are three sections - you need to beat just one of them so you can beat the game.
However, all three ways from The Anti-Hub are only open if you have completed all three ways from The Hub (and gotten all three abilities). The two alternate routes are:
Now, as for beating Higher, Higher, Higher… the first half is really easy, so I assume you don’t have trouble with that part. The second half contains rows of blocks where half only let you through, and the other half only let the platform through. What one does here is stand on the platform so you’ll barely get through the part that lets you through and destroys platform, while being off center on the platform so that if you press the action button, the platform will move to the parts that would block you but let the platform through. Then you get close, and press both jump and action at the same time. The platform will move away from you, and you will jump through. At the apex of the jump, you release action (and jump, doesn’t matter if you do or not) and move towards the platform again to land on it. It’s a bit tricky, but once you know the trick, it’s easy even on a smartphone display.
There is no builtin level editor, however you can take the source code from https://github.com/divVerent/aaaaxy/ and look at it (and change stuff) in the Tiled editor (https://www.mapeditor.org/).
There is some info here: https://github.com/divVerent/aaaaxy/blob/main/CONTRIBUTING.md#translating
Note that RTL language support is recent - there’s currently someone working on Arabic and someone on Hebrew. Non-RTL language support is well tested and in worst case I need to add another font.
I need to look into that, that touch controls “do something” while moving them is not intended. Can’t find the cause in code, but will try to see if I can reproduce it anywhere.
The area to hit for resizing is the edge quarter - so top 25% resize upwards, middle 50% move, bottom 25% resize downwards.
As for auto-hiding touch controls when controller is used - yeah, will do, there’s similarly an auto-show of touch controls when touch is used on “no touch by default” platforms, could basically reverse that. Filed https://github.com/divVerent/aaaaxy/issues/221 for that.
It was rather boring to be honest.
The font outline effect is done by turning one font into two: one as is (just with wider spacing), and another one where all glyphs are replaced by an expanded form of the same (where every pixel is active when previously any neighbor was active). I then draw the outline first and the regular glyph on top. (Sadly, fonts in Go cannot be colored, or else I could combine both into one render call - an option I still have open, but it seems like I do not need it for framerate)
Previously I had implemented this by returning an Image object where the At() function queried At() for all neighbor pixels.
The new implementation rather computes entire glyphs at once, and queries every source pixel exactly once by performing the operation separably (first horizontal, then vertical “blur”).
The main winning from this was a reduced virtual call overhead (as At() is an interface method). Calling it only once per pixel, and doing all further work on byte array realm, rather than nine times meant less indirection.
The main cost of it was more code.
Note that I had previously already eliminated almost all ingame font rendering and did it at load time into pregenerated images - this avoids complex font rendering operations at render time that previously caused fps drops or lags on low-end systems, which was unnecessary as almost all text in this game is static.
As for aspect ratio, “soon” there will be an option for it, but I am waiting for Ebitengine 2.5 to stabilize first, as the code for this is in a way that differs from the Ebitengine 2.4 way of doing this so I put this on my 2.5 branch.
In the place where the desktop setting has a fullscreen option, the mobile version will have a stretch/letterbox option.