Sign in to follow this  
Followers 0
SergeyLightful

OpenGL
EasySky - good sky system for indie developers

14 posts in this topic

I realized my sky system. It can be ported to many modern enough game (or graphics) engines, which are using OpenGL or DirectX.

The speed of this system is incredibly high. On my computer, for example it produces 1100 fps at a 1920x1080 resolution, on the DirectX mode.

Implemented:
Phases of the moon
The motion of the moon and sun
Changing the color of illumination
Time system with a complete change of the day
The gradient of the sky

At this moment there are some ideas about improving this system. But I would like to do this, only if it will make profit.
0

Share this post


Link to post
Share on other sites
Personally I don't think dynamic sky like that is good for a game because the most of time a game needs to be fixed for the story.
By the way, you have done a good work here.
I think dynamic sky like that is good for a game like Warcraft3 or similar.
It's funny, when I have launch your video, the scroll of the sky remembered me Quake3.
1

Share this post


Link to post
Share on other sites
I dont know, but maybe there are somebody who want to buy this, for own game for example.. If so, EasySky can also be improved and ported to any graphics or game engine.
0

Share this post


Link to post
Share on other sites
I don't think this is ready to be for sale as it stands. If you're looking ahead to try and sell your code, things I'd want to see are:

1) Nice atmospheric scattering (and beautiful sunrise/sunset screenshots to help sell your product)
2) 3d clouds, lit/shadowed by sun and moon light
3) Since you have the moon, you might as well have stars (a free database of actual star locations and their magnitudes is available from several places)
4) Keep that 1-2ms render time
5) Optional: a more real world scene so the customer could imagine what the sky might look like in their game

Right now what you have is more of a weekend project, and while it's certainly neat, it's probably not a viable product at this point just based on your screenshots/video.
1

Share this post


Link to post
Share on other sites
First of all, thank you for such good answer.
Second, my sky system is already have stars.
Third, I decided to share demo of my EasySky to get a better look.

Link to EasySky demo will be here today.
0

Share this post


Link to post
Share on other sites
Have a look at [url="http://sundog-soft.com/sds/features/real-time-3d-clouds/"]silverlining[/url] -- these guys are your competition in selling dynamic sky middleware.

Just make an easy-to-use API for it, make some decent documentation, and choose a fair price [img]http://public.gamedev.net//public/style_emoticons/default/biggrin.png[/img]
2

Share this post


Link to post
Share on other sites
Demo crashes in D3D9 debug mode. You might wanna look into that.

In retail mode it looks very nice already and I'd even be willing to spend a little money on something like this if it comes with source code or at least a decent API.

Edit: The debug error message is: "Invalid sample type specified. CheckDeviceMultiSampleType fails."
1

Share this post


Link to post
Share on other sites
I'm not quite sure what it is, but your atmospheric scattering seems a little off. The entire skydome is changing colour at dawn/dusk, when the effect should be more pronounced nearer the horizon.

As for features, configurable clouds are a must (at least cumulus and cirrus). Cloud shadows projected on the ground would be awesome, god rays would be even better...
1

Share this post


Link to post
Share on other sites
Looks good but I agree with swiftcoder. Your scattering looks a bit off. Also configurable clouds and god rays will help improve the overall look of things. HDR can help a ton for skys as well. :)

-Toaster
1

Share this post


Link to post
Share on other sites
Update! EasySky_v1.2

What's new:
Implemented shadows of the clouds
Fixed lighting

On my computer it produces 1100 fps at a 1920x1080 resolution, on the DirectX mode.

[attachment=6910:screenshot01272012_211300454.png]

[attachment=6911:screenshot01272012_211317521.png]

[attachment=6916:screenshot01272012_214024893.png]
0

Share this post


Link to post
Share on other sites
I don't particularly like your scattering method, but I think it looks decent enough and the performance is there which is the important thing. You might want to consider adding stars next? It would also be neat if you could change the brightness and number of stars depending on the atmospheric conditions and global light from cities. For instance a large city might have 5-10 bright stars, where out in the country there could be thousands. Hope this helps! :)
0

Share this post


Link to post
Share on other sites
I was also thinking since you are planning on selling this you might want to look into introducing more complex atmospheric scattering models. Make it something the user can change depending on what machine he is running on. Also supporting more engines besides [color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif][size=3][left]Ogre3D [/left][/size][/font][/color]would be a step up as well. Although I'm not sure how you would go about doing that.
0

Share this post


Link to post
Share on other sites
The stars have already been implemented in a simple form.

Topic moved to: [url="http://www.gamedev.net/topic/619308-easysky-good-sky-system-for-indie-developers/"]http://www.gamedev.net/topic/619308-easysky-good-sky-system-for-indie-developers/[/url]
0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Similar Content

    • By Jon Alma
      Some time ago I implemented a particle system using billboarding techniques to ensure that the particles are always facing the viewer.  These billboards are always centered on one 3d coordinate.
      I would like to build on this and use billboarding as the basis for things like laser bolts and gunshots.  Here the difference is that instead of a single point particle I now have to draw a billboard between two points - the start and end of the laser bolt for example.  I appreciate that having two end points places limits on how much the billboard can be rotated to face the viewer, but I'm looking to code a best effort solution.  For the moment I am struggling to work out how to do this or find any tutorials / code examples that explain how to draw a billboard between two points ... can anyone help?
      Thanks.
    • By Sagaceil
      It's always better to fight with a bro.
    • By recp
      Hi,
      I'm working on new asset importer (https://github.com/recp/assetkit) based on COLLADA specs, the question is not about COLLADA directly
      also I'm working on a new renderer to render (https://github.com/recp/libgk) imported document.
      In the future I'll spend more time on this renderer of course, currently rendering imported (implemented parts) is enough for me
      assetkit imports COLLADA document (it will support glTF too),
      importing scene, geometries, effects/materials, 2d textures and rendering them seems working
      My actual confusion is about shaders. COLLADA has COMMON profile and GLSL... profiles,
      GLSL profile provides shaders for effects so I don't need to wory about them just compile, link, group them before render

      The problem occours in COMMON profile because I need to write shaders,
      Actually I wrote them for basic matrials and another version for 2d texture
      I would like to create multiple program but I am not sure how to split this this shader into smaller ones,

      Basic material version (only colors):
      https://github.com/recp/libgk/blob/master/src/default/shader/gk_default.frag
      Texture version:
      https://gist.github.com/recp/b0368c74c35d9d6912f524624bfbf5a3
      I used subroutines to bind materials, actually I liked it,
      In scene graph every node can have different program, and it switches between them if parentNode->program != node->program
      (I'll do scene graph optimizations e.g.  view frustum culling, grouping shaders... later)

      I'm going to implement transparency but I'm considering to create separate shaders,
      because default shader is going to be branching hell
      I can't generate shader for every node because I don't know how many node can be exist, there is no limit.
      I don't know how to write a good uber-shader for different cases:

      Here material struct:
      struct Material { ColorOrTexture emission; ColorOrTexture ambient; ColorOrTexture specular; ColorOrTexture reflective; ColorOrTexture transparent; ColorOrTexture diffuse; float shininess; float reflectivEyety; float transparency; float indexOfRefraction; }; ColorOrTexture could be color or 2d texture, if there would be single colorOrTex then I could split into two programs,
      Also I'm going to implement transparency, I am not sure how many program that I needed

      I'm considering to maintain a few default shaders for COMMON profile,
      1-no-texture, 2-one of colorOrTexture contains texture, 3-........

      Any advices in general or about how to optimize/split (if I need) these shaders which I provied as link?
      What do you think the shaders I wrote, I would like to write them without branching if posible,
      I hope I don't need to write 50+ or 100+ shaders, and 100+ default programs

      PS: These default shaders should render any document, they are not specific, they are general purpose...
             I'm compiling and linking default shaders when app launched

      Thanks
    • By CircleOfLight97
      Hi guys,
      I would like to contribute to a game project as a developer (open source possibly). I have some experiences in C/C++ in game development (perso projects). I don't know either unreal or unity but I have some knowledges in opengl, glsl and shading theory as I had some courses at university regarding to that. I have some knowledges in maths and basic in physics. I know a little how to use blender to do modelling, texturing and simple game assets (no characters, no animation no skinning/rigging). I have no game preferences but I like aventure game, dungeon crawler, platformers, randomly generated things. I know these kind of projects involve a lot of time and I'd be really to work on it but if there are no cleary defined specific design goals/stories/gameplay mechanics I would like to not be part of it x) and I would rather prefer a smaller but well defined project to work on that a huge and not 'finishable' one.
      CircleOfLight97
    • By gamesthatcouldbeworse
      Hi, I finally released KILL COMMANDO on gamejolt for free. It is a retro-funsplatter-shooter with C64 style. Give it a try.