😊 Open Source 3D Platformer : Edelweiss

If you can connect to your heroku from itchio, it will be fine. All you have to do is 1 route playerInfo events to other players, and 2 send playerLeft events when they time out, here:

I have no hopes for the level editor, TBH, but he has some minecraft experience, so who knows.

1 Like

Your game - one of the best platformers i ever played. Last music theme just awesome and very suitable.

Walked through more than 20 times, love it so much.

Btw, the game not very popular on itch.io. I really wonder why.

1 Like

you have to buy traffic for the game to be popular. sometimes someone with lots of social influence likes your game and mentions it somewhere, and you get free traffic. but most of the time nobody even knows your game exists.


also you need to play more platformers :slight_smile: check out A Short Hike by adamgryu for example - I bet it has everything edelweiss has, and more


Of course, I exaggerated slightly. But you must admit - the game looks rude at first glance, but in reality it is quite exciting and very replayable.

1 Like

Of course, I exaggerated slightly. But you must admit - the game looks rude at first glance, but in reality it is quite exciting and very replayable.

PS: I see you are Russian. Me too. If you are interested in developing (game or other tasks) with three.js - write to me on Telegram @sjuksin

1 Like

I will admit that this is the best opensource 3js game Ive seen so far, will that work :smiley:


Looks very good. It seems like Edelweiss was inspired by this game. I expect a very good gaming experience, thanks you.

1 Like

We know exactly what edelweiss was inspired by:

1 Like

Thanks, you guys are too kind ! I’ve done my best, but as @makc3d pointed out, it’s not like Mario 64 either :joy:About A Short Hike I admit it’s very similar, and they had the same idea about fixed camera angle. I’ve not played it though. If I must really find which of the games I played Edelweiss come from, it would be Journey, Monument Valley and Metroid (for the backtracking, which ended up not being so fun IMO) + some standard platform mechanics from Mario, Zelda… etc…

About popularity on itch.io, it’s quite hard to get. I’ve done the mistake that a lot of beginner devs do : following a normal design process.

Intuitively, you would start such a project by coding the broad systems (collisions for instance), then refining the systems (camera movements and such), and then once the systems are settled you would go for creating the graphic content (3D assets, textures…). You may want to create some basic assets early to have a broad idea of what you’re doing while coding the systems (that’s what I did), but ideally you would prefer to keep the refined asset creation for the end, to not waste time and resources creating things that you end up not using.

But it’s not how game development works today, as I learned… You must create very good looking assets and scenes early, to be able to communicate on the WIP game while developing in order to hoard a fan-base, for testing, and for promoting. Failing at that means that you must communicate all at once when you release the game, and it can’t be done successfully without money.

Anyway it was mostly a practice project for me, but I won’t do this mistake next time.

@makc3d I merged your project, it works like a charm, thank you again for taking the time to do this !
However I have some bad news… The merged version is only playable at the link on the Github page, but not from itch.io.

I don’t really know how SSL works, but the issue is that itch.io necessarily serves my static game over HTTPS, and my heroku VM is a free plan, so they won’t do SSL for free. Consequently, the player’s browser won’t start a WS connection over insecure channel. I think it could work if I upgraded the Heroku plan to a paid plan, but I don’t know if it’s worth, since I have only 2 - 3 players a day on itch.io… Do you have any suggestion on a workaround ?

1 Like

I am not sure at all why do you want something from heroku, e g looking at this line you are not using it at the moment? Then, if I just add “s” to your current socket io url, i.e. https://edelweiss.32x.io/socket.io/?EIO=3&transport=polling it seems to open just fine?

it is not really fixed there, since they have an island and, as you go around it the camera rotates to face the hills several times. but if you stay on the same island side, it can be considered fixed, yes.

http://edelweiss.32x.io is the url of the production app, it’s also hosted by Heroku with a custom domain. I think you tried to add an ‘s’ at the time I switched to paid plan to test if it works (and it works).

If you retry now you will get this error when you try to connect the app with socket io from anywhere :

If I try to keep the socket io url without the s, and load the app like this to itch io, it won’t start the socket io connection and throw this error :
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint '<URL>'. This request has been blocked; the content must be served over HTTPS.

I suppose I should just pay, but this game doesn’t bring me any income, and very few visibility, so personally I don’t mind so much if the full app is only accessible from Github…

a ha, that makes sense. maybe check some of these then?

as you see in my case I just used firebase and did all the “server” code on the client exactly to avoid having to deal with these hosting problems :wink:

WOW, really cool, i like the camera controller! its all very nice :slight_smile:

1 Like

@felixmariotto meanwhile I continue to play with my favorite opensource game here. After hard fail trying to use your editor I was thinking, what would it take to make one in-game :thinking: I am still not sure if I can do it reasonably fast, BUT at least it is now possible to switch the helpers on from the console, without editing the source - so you could go to my fork, type atlas.debug() in the console and “see the matrix”:

Unfortunately PlaneHelper-s do not work for some reason (bad 3js version ??). Also, I was surprised to see the tiles extending towards the camera in the cave:

Is there any specific reason for that, or these are editing leftovers?


Hi @makc3d !

That’s awesome, I love how it only affects the area around the player !

The tiles you mention in the caves are just for the camera to collide. On the screenshot you took I’m not sure it’s necessary though, I think it could be removed, but given the compressed size of the json file I admit I haven’t been sparing :sweat_smile: Like all the caves have roofs and some walls in the mountain are probably higher than necessary.

Making an in-game editor is definitely a good idea, but how to render it ? Currently the world assets are hand-made according to the physic world I edited, a user-generated world would have to be rendered differently. I guess it could be enough to render tiles in instancedMeshes, and maybe add some features in the editor to let the user add vegetation and sounds. It’s maybe not so much work on the game side. But the editor is really not human-friendly, I think you determined that by yourself, especially how you draw the tiles.

Also I just tried to re-work how I merged your fork, especially because I saw that there was a problem with the shadows… Everything is fine, but I think I messed up when I pushed --force in the remote, I hope it won’t affect your fork or anything…
I’m quite a beginner to coding and git, please bear with me !

It is a bit unfortunate that the codes diverge quickly, I am afraid in a month we will not even be able to cherry-pick the changes. But in the mean time while it still works, what do you mean by

And what commit fixes it?

Well, not necessary, I was just thinking about minecraft-style boxes added maybe, so you could both play the result and export these cubes just like you export gltf from your editor; then taking the result into blender and making the actual level - so not very different from how things are now.

I don’t know, in my merged version the shadow camera didn’t follow the player, whereas it worked before the merge. Because it’s been long and I didn’t take enough time when I merged, I decided to revert to before the merge, and re-write the parts you changed part by part, to better understand what you did, while taking the time to clean up my own code. Now it works, so I can’t tell you what was the problem exactly, but I’m pretty sure it’s something I did, anyway it seems to work properly in your fork. Now anyway git erased all the commits after the initial merge. I hate git so much, it’s fucking complicated.

I spent months if not years hating git as well, until I saw that one video by one of git devs that explained the git in ~10 minutes and cleared any and all misunderstandings for me. I will post it if I can remember how to find it (edit: I think Ive found the link but the uploader account is removed). I still look up the actual git commands on the internet, but I feel like I understand what I do now enough to not hate it any more.

edit: btw,

your git may be did, but github remembers.