Most active commenters
  • nightowl_games(23)
  • wingerlang(3)

115 points nightowl_games | 55 comments | | HN request time: 1.679s | source | bottom
1. nightowl_games ◴[] No.42222008[source]
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.

replies(2): >>42225509 #>>42227179 #
2. dylanhouli ◴[] No.42224677[source]
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.

replies(1): >>42225125 #
3. nightowl_games ◴[] No.42225125[source]
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.

4. guidedlight ◴[] No.42225386[source]
I was curious if the Yeti would appear, I assume it is on the to do list. Great game. Keep going with it.
replies(1): >>42225389 #
5. nightowl_games ◴[] No.42225389[source]
Yeah todolist for the back country
6. pimlottc ◴[] No.42225473[source]
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.

replies(1): >>42225547 #
7. jebarker ◴[] No.42225479[source]
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.
replies(1): >>42225552 #
8. Rendello ◴[] No.42225509[source]
Awesome. I'm interested in making games that can run in the browser, I never considered that Godot might have this capability.
replies(1): >>42225539 #
9. nightowl_games ◴[] No.42225539{3}[source]
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

replies(1): >>42225852 #
10. nightowl_games ◴[] No.42225547[source]
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.
11. nightowl_games ◴[] No.42225552[source]
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.

12. ndjdjddjsjj ◴[] No.42225723[source]
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.

replies(1): >>42225788 #
13. vunderba ◴[] No.42225747[source]
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.

replies(2): >>42225785 #>>42240466 #
14. nightowl_games ◴[] No.42225785[source]
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.

replies(1): >>42227187 #
15. nightowl_games ◴[] No.42225788[source]
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.
16. captaindiego ◴[] No.42225852{4}[source]
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.
replies(1): >>42233240 #
17. exabrial ◴[] No.42225908[source]
love it :) The controls with the mouse are impossible with a track pad tho :/ maybe have a keyboard option?
replies(1): >>42226453 #
18. yellowapple ◴[] No.42226453[source]
My trackpad seems to handle it fine, but I agree that keyboard controls would be nice.
19. djmips ◴[] No.42227179[source]
I like it! Played for about 30 minutes.

Is there a way to make the mouse pointer disappear when playing? System: Windows 10 - Browser: Chrome.

Thanks for sharing!

replies(1): >>42230079 #
20. f549abd01 ◴[] No.42227181[source]
Awesome! You really nailed it.
replies(1): >>42237354 #
21. djmips ◴[] No.42227187{3}[source]
They are working on that! But I guess there's the old trick of having a 'visibile' level at loading time that has all the shaders and variants in it so they get pre-compiled.
replies(1): >>42231456 #
22. ◴[] No.42227450[source]
23. nubinetwork ◴[] No.42227462[source]
Wheres the scary monster at the end? Running into the wall is such a tease...
replies(1): >>42228598 #
24. ChrisArchitect ◴[] No.42227526[source]
About SkiFree from The Most Officialest SkiFree Home Page

https://ski.ihoc.net/

25. philipwhiuk ◴[] No.42227673[source]
Where's the 'Reject all' option for the data preferences?

> Your personal data will be processed and information from your device (cookies, unique identifiers, and other device data) may be stored by, accessed by and shared with 264 TCF vendor(s) and 413 ad partner(s), or used specifically by this site or app.

That's pretty insane.

> Measure advertising performance

> Legitimate interest (90 vendors)

You're really gonna send my data to 90 organisations to measure advertising performance?

> FCCDCF

Why is the cookie given this obscure name? Is it so it's harder to identify later?

replies(2): >>42228939 #>>42230071 #
26. black6 ◴[] No.42228276[source]
If you have the Edge browser you can point it to edge://surf/
27. wholinator2 ◴[] No.42228598[source]
Agreed, i need like a secret hole in the fence that leads to a path out of bounds or something. A monster that chases you, some kind of halo 3 esque sandworm type boundary monster that you cant ever really beat, but it's fun to play against. Or maybe a secret power up thing that turns the mountain rainbow or something like that. The actual objectives be damned, i see a game like this and i go straight to the fence to see if anything's there. If not, then I'm done
replies(1): >>42230080 #
28. 650REDHAIR ◴[] No.42228939[source]
I came here to make the same comment.

I immediately closed the tab.

29. dahousecat ◴[] No.42229611[source]
This is lots of fun. One bit of feedback for mobile: Would be nice if a back swipe took me out of the menu back to the game.
30. nightowl_games ◴[] No.42230071[source]
Where did you read this? We use AdInPlay to serve ads. There is no ads in this game yet, but I'm probably initializing the SDK.
replies(1): >>42231784 #
31. nightowl_games ◴[] No.42230079{3}[source]
I think you need the pointer to play this game! I could replace it with something more on theme.

Thanks so much for playing!

32. nightowl_games ◴[] No.42230080{3}[source]
That's exactly what I wanna build!
33. gkiely ◴[] No.42231362[source]
Pretty cool man.

1. I would replace the chairlift sequence in place of a shortened animation or just make it teleport.

2. Keyboard shortcuts.

3. Where's the monster? ;)

replies(1): >>42231450 #
34. nightowl_games ◴[] No.42231450[source]
1. Yeah your probably right but I want to make the chairlift "good"/"real" somehiw.

2. Yes.

3. Yes!

replies(1): >>42239812 #
35. nightowl_games ◴[] No.42231456{4}[source]
Yeah I have a node for Godot that does that. I think I'm going to use CPU side stuff for the particles instead of shaders instead... And the audio you can load ahead of time as well
36. philipwhiuk ◴[] No.42231784{3}[source]
Immediately on arriving on the site:

https://imgur.com/87pnDR9

replies(2): >>42232874 #>>42234450 #
37. nightowl_games ◴[] No.42232874{4}[source]
Wtf

I've never seen that before.

Are you in the EU?

replies(1): >>42233543 #
38. nightowl_games ◴[] No.42233240{5}[source]
https://www.youtube.com/watch?v=xo3z9IjGRSo

My colleague made this 3 years ago before we released our first game.

Basically we forked Godot, setup VSCode to compile it, and add new classes to a <repo>/modules/<project_name> folder and it works great. Since this video we've made a suite of macros that allow us to bind variables and methods to the ClassDB in 1 line each. Way nicer than default godot technique for adding new variables/methods.

39. Kailhus ◴[] No.42233543{5}[source]
Same here an yep, UK for me. Great game btw
replies(1): >>42237215 #
40. djhn ◴[] No.42234450{4}[source]
The irony is that imgur uses the same consent dialog box design with the same underhanded tactic of several different categories of ”legitimate interest” that each contain dozens of data providers and need to be toggled off individually.
41. wingerlang ◴[] No.42236544[source]
Very fun, some suggestions:

- The ski lift is fun, gives a little break and immerses

- Off pist is just as clumsy-smooth-clumsy as in real life, fun to explore as well like in real life

- I wish I could get some carving feedback when going really fast

Maybe record some peoples sessions and play them back every now and then, psuedo-multiplier.

More secrets. I went all the way to the right / bottom and the payoff was not good.

Mobile app?

Daily/weekly leaderboards for some tracks that changes

replies(1): >>42237471 #
42. nightowl_games ◴[] No.42237215{6}[source]
That sucks! It's hard to find an Ad Network that works inside of our games. Our games are normally featured on poki.com or crazygames.com which have their own systems without that aggressive popup. Sorry you saw that, I've never seen that before.
43. nightowl_games ◴[] No.42237354[source]
That means a lot to me, thank you.
44. nightowl_games ◴[] No.42237471[source]
Carving feedback eh? Can you give me some more ideas on that?
replies(1): >>42238355 #
45. wingerlang ◴[] No.42238355{3}[source]
Maybe carving is the wrong word, but when I go fast and turn I expect to slide and make snow fly. There should be some effort required to turn, not in a bad way, but in a "I'm drifting!" way. That would be satisfying.
replies(1): >>42240455 #
46. gkiely ◴[] No.42239812{3}[source]
Nice one and good job on the perf it’s noticeable.
47. nightowl_games ◴[] No.42240455{4}[source]
I see. There is a 'skid' where you send some snow flying, you gotta turn hard and exceed some kinda internal max angle between your 'skis' and your desired turn angle. I think that skid logic could be improved. Try turning really fast!
replies(1): >>42242599 #
48. nightowl_games ◴[] No.42240466[source]
Try it again! I added 'pixel perfect' camera & player position snapping, as well as interpolated player movement between the tick rate and your monitor's refresh rate.
replies(1): >>42253446 #
49. ◴[] No.42240497[source]
50. wingerlang ◴[] No.42242599{5}[source]
I am aware of this. I am talking about long and slow turns at the highest speed not having any nice feedback like snow or sounds.
replies(1): >>42245975 #
51. nightowl_games ◴[] No.42245975{6}[source]
Ahh. I can iterate on that, thanks.
52. Anaphylaxis ◴[] No.42248518[source]
Pretty fun but progress doesn't seem to save on mobile. Can you make this a PWA with a manifest so it can be added to iOS home screen properly please?
53. vunderba ◴[] No.42253446{3}[source]
Nice going - It's significantly smoother. Good luck with the project in the future!
replies(1): >>42257194 #
54. nightowl_games ◴[] No.42257194{4}[source]
Glad to hear it.