Made this in Godot 3. Majority of the game is written in c++ as a custom module, ie: compiled directly into the engine. We have a fork of godot that has slight tweaks to it. I profile the game using advanced tools and have rewritten several parts of it several times to be optimal. There is basically 0 gdscript running at runtime. The c++ is far more performant than GDExtension/GDNative/C#. The trees are streamed in and out of the viewport as they become visible. All the tree types and snow render from the same spritesheet. The tree types are pooled instead of created & destroyed. The thing that streams the stuff in and out is optimized. The skiers are rendered using a technique called 'SpriteStacking' where 3d voxel art is rendered into a 2d sheet and 'fanned out' to make a pseudo 3d effect. I even cahc spritestacks are optimized, etc. I even go as far as caching the rotation operations to fan those skier sprites out. The .wasm has been stripped down to ~2.7mb. I want to strip it further and get it smaller. Download size is king. Planning on releasing this on a web platform like crazy games or poki and hoping to build ad revenue.
Next steps are to make it so when you past the boundary fence you enter 'back country mode' that just goes forever and a popup tells you how far youve gone, but if you fall, its game over and ski patrol takes you back. I also want to iterate on the chairlift and make the bots 'queue up'. Not sure about if the chairlift is 'fun' or not. I want the mountain to feel like a real ski resort, but nobody wants to wait.
Anyways, this game is still in development, let me know what you think.
It does, but it works best if you compile it yourself, strip the engine down and add your own core game code as c++ classes. Not for everyone, but works good for me as I like c++.
If you wanna go straight to the web, probably start with play canvas or even Defold. Godot works, but if your not a c++ guy or dont want to fork the engine, then your not going to be able to optimize your game as much as I have
Do you know of any examples of doing something more complicated like this with Godot and C++ (past the normal docs)?... I've got some existing C++ game engine stuff I'd like to integrate with Godot for managing rendering side of things.
One thing: I wish there was a way to quickly reset to the top of a chairlift (map maybe?) or set a session and easily teleport back to it.
Reason is, I took the sunshine chair (I think its called that, the one on the right) and then went super far right into the trees cause I was curious if anything was over there, but the trees are super tight so when trying to go back, I keep hitting them and falling, and it's a bit tedious.
Definitely captures the feel of a ski resort. I really like the feel of controlling the skier too. Performance on my iPad was great in Safari. Nice job so far.
Thank you. 'The feel of a mountain' is what I wanted. "make your own fun"... I'm a performance guy, this game has been optimized to run on old Android phones at 60fps on the web. It absolutely flies on a desktop PC or native mobile, like 1ms for the entire frame.
I think I could add a lot more 'life' to the mountain by going really far with the bot skier AI. Like having them queue up to get on the chairlift, and avoid/flock with each other.
Means a lot to me that you like the feel of the skier. I am the kind of gamedev that will spend an entire week tuning the friction of various mechanics, and I have a huge amount of taste on how things like 'max speed', friction & turning should be done. I've built this taste up over 10 years of making games, and I think I've got good taste, but it still feels great to have someone validate that.
Really cool! The sprite style reminds me of bit of old school 2D GTA.
One suggestion, some info at the start on the controls would be helpful. I didn't realize it was mouse controls and spent a while hitting different keys trying to figure out how to get moving.
I'm glad you like it. I got a giant mountain that I just gotta fill in. Going to make it so you can go outside the fence and enter an infinite back country mode as well.
Pretty fun! Does seem to have some glitching issues on my iPad Pro - particularly if I cross through a race flag the sound completely glitches and the frame rate stutters for a second.
EDIT: one further note, once the skier has achieved a certain speed, and it shows the flames underneath the skis, it's almost like the graphics are being rendered in separate loops. The skier maintains a consistent frame rate, but the trees seem to be rendered almost at a half frame rate, so they appear to be slightly flickery. I can't tell if this was done deliberately for optimization purposes but it was a bit distracting.
Theres a couple things that cause stuttering: the first time a sound is played it is decoded, and the first time a particle effect is seen its shader is compiled (snow and flame particles).
The bug your describing with the trees I think is just a by product of my having not implemented proper 'pixel perfect' camera positioning, ie: the trees are being rendered off center from a pixel so they look glitchy, while the character is always at the same position on the screen so doesnt look glitchy.
I'm suprised your ipad pro has the above sound/shader issue as noticably... Shader compilation is also pretty brutal on windows.
Made this in Godot 3. Majority of the game is written in c++ as a custom module, ie: compiled directly into the engine. We have a fork of godot that has slight tweaks to it. I profile the game using advanced tools and have rewritten several parts of it several times to be optimal. There is basically 0 gdscript running at runtime. The c++ is far more performant than GDExtension/GDNative/C#. The trees are streamed in and out of the viewport as they become visible. All the tree types and snow render from the same spritesheet. The tree types are pooled instead of created & destroyed. The thing that streams the stuff in and out is optimized. The skiers are rendered using a technique called 'SpriteStacking' where 3d voxel art is rendered into a 2d sheet and 'fanned out' to make a pseudo 3d effect. I even cahc spritestacks are optimized, etc. I even go as far as caching the rotation operations to fan those skier sprites out. The .wasm has been stripped down to ~2.7mb. I want to strip it further and get it smaller. Download size is king. Planning on releasing this on a web platform like crazy games or poki and hoping to build ad revenue.
Next steps are to make it so when you past the boundary fence you enter 'back country mode' that just goes forever and a popup tells you how far youve gone, but if you fall, its game over and ski patrol takes you back. I also want to iterate on the chairlift and make the bots 'queue up'. Not sure about if the chairlift is 'fun' or not. I want the mountain to feel like a real ski resort, but nobody wants to wait.
Anyways, this game is still in development, let me know what you think.
Awesome. I'm interested in making games that can run in the browser, I never considered that Godot might have this capability.
It does, but it works best if you compile it yourself, strip the engine down and add your own core game code as c++ classes. Not for everyone, but works good for me as I like c++.
If you wanna go straight to the web, probably start with play canvas or even Defold. Godot works, but if your not a c++ guy or dont want to fork the engine, then your not going to be able to optimize your game as much as I have
Do you know of any examples of doing something more complicated like this with Godot and C++ (past the normal docs)?... I've got some existing C++ game engine stuff I'd like to integrate with Godot for managing rendering side of things.
This is awesome. Super fun, love the look.
One thing: I wish there was a way to quickly reset to the top of a chairlift (map maybe?) or set a session and easily teleport back to it.
Reason is, I took the sunshine chair (I think its called that, the one on the right) and then went super far right into the trees cause I was curious if anything was over there, but the trees are super tight so when trying to go back, I keep hitting them and falling, and it's a bit tedious.
Agreed. Only the first chair is really done, rest of the mountain needs a lot of work. Im thinking of adding a map where you can fast travel.
Thanks for playing and for commenting.
Definitely captures the feel of a ski resort. I really like the feel of controlling the skier too. Performance on my iPad was great in Safari. Nice job so far.
Thank you. 'The feel of a mountain' is what I wanted. "make your own fun"... I'm a performance guy, this game has been optimized to run on old Android phones at 60fps on the web. It absolutely flies on a desktop PC or native mobile, like 1ms for the entire frame.
I think I could add a lot more 'life' to the mountain by going really far with the bot skier AI. Like having them queue up to get on the chairlift, and avoid/flock with each other.
Means a lot to me that you like the feel of the skier. I am the kind of gamedev that will spend an entire week tuning the friction of various mechanics, and I have a huge amount of taste on how things like 'max speed', friction & turning should be done. I've built this taste up over 10 years of making games, and I think I've got good taste, but it still feels great to have someone validate that.
Really cool! The sprite style reminds me of bit of old school 2D GTA.
One suggestion, some info at the start on the controls would be helpful. I didn't realize it was mouse controls and spent a while hitting different keys trying to figure out how to get moving.
Good point. I do plan on adding keyboard controls reminiscent of Ski Free, but simply saying "Use the mouse to ski" is probably a good thing to do.
love it :) The controls with the mouse are impossible with a track pad tho :/ maybe have a keyboard option?
This is brilliant. The skilift mechanic is brilliant: no boring queue at the bottom but the usual fun chaos at the top.
I like the freedom to go off piste.
Just needs choices! More lifts and more runs.
I'm glad you like it. I got a giant mountain that I just gotta fill in. Going to make it so you can go outside the fence and enter an infinite back country mode as well.
I was curious if the Yeti would appear, I assume it is on the to do list. Great game. Keep going with it.
Yeah todolist for the back country
Pretty fun! Does seem to have some glitching issues on my iPad Pro - particularly if I cross through a race flag the sound completely glitches and the frame rate stutters for a second.
EDIT: one further note, once the skier has achieved a certain speed, and it shows the flames underneath the skis, it's almost like the graphics are being rendered in separate loops. The skier maintains a consistent frame rate, but the trees seem to be rendered almost at a half frame rate, so they appear to be slightly flickery. I can't tell if this was done deliberately for optimization purposes but it was a bit distracting.
Theres a couple things that cause stuttering: the first time a sound is played it is decoded, and the first time a particle effect is seen its shader is compiled (snow and flame particles).
The bug your describing with the trees I think is just a by product of my having not implemented proper 'pixel perfect' camera positioning, ie: the trees are being rendered off center from a pixel so they look glitchy, while the character is always at the same position on the screen so doesnt look glitchy.
I'm suprised your ipad pro has the above sound/shader issue as noticably... Shader compilation is also pretty brutal on windows.
Thanks for the feedback and bug reports.