Game Engine Forum - Grit Open Source Streaming Game Engine
Site Header
It is currently Sat Jan 19, 2019 9:43 pm

All times are UTC




Post new topic Reply to topic  [ 11 posts ] 
Author Message
 Post subject: Just another roadmap..
PostPosted: Wed Jan 27, 2016 4:09 am 
Offline
Newbie
User avatar

Joined: Fri Mar 21, 2014 12:25 am
Posts: 116
Location: Rio Grande do Sul
Hi guys,
This post is mostly a personal perspective about a roadmap for Grit, but some ideas are taken from IRC and other forum topics.

I probably didn't included all cool ideas discussed in other forum topics, so if you remember it please tell me.

Some items are very specific due to partial dev/study about it correlated to things that i was working on..

Note: Some items are insane ideas (far beyond reality), only possible with a large development team or for a distant future when robots take over the world :wow:

¶ Soon (maybe not)
¶ Not so soon..
¶ We need this
¶ It's cool
¶ Someday..
¶ In a distant future..
¶ I don't know..

Editor:

    Selection using bounding boxes:
    • Useful for non-physical objects, proxies (sounds, lights, particles)
    Edit sounds, lights, particles:
    • Select/Move/Change properties
    Widget (transform tool)
    • Do local/global, pivot point (when multiple object selection, select: middle point, per-object)
    Object properties:
    • When selecting an object it shows custom properties to be added to them, in a window or a side panel
    • Save and load object properties to/from map files
    Object editor: (right click an object on class browser to open)
    • Features like play animations, set materials, set collision mesh, reload resources and other per asset stuff
    Navigation Editor +
    • Export modifiable navmesh (for editing inside a 3d modeller)
    • Area type tool (using convex shape or volumes or other ideias)
    Enhance class browser with tabs, for classes/particles/sounds/lights and also pure objects (with no class declaration)
    Volumes
    • Useful for the navigation editor navmesh areas, triggers (also useful for areas, like: post process volume, water swim volume...)
    • How to select a volume? (bounding box is not a good idea)
    Save map with embeded navmesh and off mesh connections
  • Box selection like This
    Hide editor tabs when only the main tab is open
    Animation Editor:
    • A timeline, with keyframes
    • 3D:
      • animate objects/lights/particles, moving/rotating them in the scene, interpolating in sequence of points and also moving in curves
      • set in wich moment of the timeline start playing a mesh animation
    • 2D:
      • Create 2d animations, that can be exported to json files
      • Useful when you need to create complex 2d animations
    HUD Editor
    • Put all your HUD elements in place pretty easily
    • Set textures, rounded corners, sizes, colours, opacity
    • Set alignment: left, right, top, bottom, with offsets
    • All data stored in a table, that you can access through lua script using hud object names
    Bake lightmaps inside editor
    • Lightmaps are used only for static objects, so, baking it on a external application would be a problem, since you put all objects in place inside the editor (please forget my post about putting the lightmap into the material, it is clearly a per-level thing)
    • Store all lightmaps inside the map file
    • Set lightmap resolution for each object (large objects needs bigger lightmaps resolution, but it costs memory, so let the developer set it manually)
    • Find a good open source library to do it
    Foliage tool, paint foliage over other meshes, for fast placement (different than the existing one using the physical material, since on this method we can cover partially and with different meshes, but is just an alternative tool)
    A list with all added objects, organized by groups. Also a default group called "Navigation" with all objects used to build navmeshes?

General:

    Physics Constraints
    • Ragdoll
    • Car doors
    Fully Physically Based Shading (albedo, normal, roughness, "metalness"??)
    Realtime collision creation (create boxes, cylinders, spheres, at any time, with any size. May not be really realtime, but allow the developer to create custom collisions inside editor)
    Collision scale (Bullet doesn't support right?, but is really important i think)
    Cloth simulation (Bullet soft bodies), with a character clothing/hair example
  • 3d text/hud like This
    Increase HUD performance
    New Structure
    • Move all maps and other non essential folders from media folder to other folders (maps, tests..)
    • Move environment stuff from system to another folder, where the developer can easily remove environment system from his project if wants to (probably never will be requested, but need to be possible)
    • Save all files into User/Documents/Grit, config files, projects (game modes) and maps
    • Remove deprecated/useless files (if had some)
     Support for multiple rendering windows
    • What do you think about playing a game with a friend at home, each person on a different monitor? (way better than splitscreen)
    • Would be great to have some off screen editor windows 
    Set mouse cursor icon (i mean OS cursor: resizing, hand, hourglass)
    Set window title, viewport background colour, all using Lua
    Car damage system?
    Multiple LOD system
     Particles:
    • Create a Particle Emitter system (not only a single particle, but a way to spawn multiple particles with some logic)
    • A pointer to the particle, so we can set positions, vertex colour (you may call it just colour), size, and so on..
    • Better performance?
    • Shader/material support?
    Multiplayer Online, with an example game mode with player names, direct connect to IP, ping status when pressing a key, just some players walking around the map punching each other or firing weapons (only basic features for now). Maybe also driving cars?
     Graphics:
    • Add SSAO
    • Add antialiasing
    • Add motion blur
    • Add cast shadows for specific lights, only when the developer really need it (like flashlights)
    • DOF
    • Material distortion (for water, some king of glass)

Importing Assets:
Importing objects into Grit is boring: you need to set up a plugin into the 3d modeler, export, move the 3d mesh to Grit directory, create a new lua file, open it, open another lua file that have a example code, copy its content, paste into the new lua file, modify it, and also create the material, copy all textures to the same directory, copy a example material, paste into the new lua file, modify it using the textures, and finally, you can include the lua script into grit \o/

My idea is to include Assimp into Grit (support for many 3d file formats), then you can simply export your mesh to fbx, drag and drop into the content browser and it converts and move the files into the current directory and create a "temporary" class. Temporary classes are just abstract classes that have no gfxMesh, that uses the mesh file declared only in the table when you load an object into the scene { gfxMesh = `myMesh.mesh` }. Other game engines allow the user to do it, and you only need to create a class when you really need to do it.
OK, we still need to export the collision mesh, i sujest the same idea as Unreal Engine, using a prefix into the name of the collision mesh inside the fbx file, so we just need to separate them in different files, when a submesh have gcol_ prefix it turns into a .gcol file, and all other files turns into mesh files. Collision files still need other properties, like mass, static or dynamic and so on, so better have a tool in the editor to do those tweaks.

General Gameplay features: (general purpose stuff in practice)

    Open car doors, moves and breaks using constraints
    Car damage system?
    NPCs that when you hit their collision cylinder it disables navigation and turns into a ragdoll, and when it stop moving for a while it turns back into a cylinder controlled by a navigation agent
    Load maps with navmeshes and offmesh connections
    Enemies: with firearms and melee weapons (including behaviors like patrolling and seeking)
    Design, model and animate a 3d character, a Grit "mascot" or a simple human/driver/soldier/crazy_guy?
    Main menu, pause menu, graphical options menu, in-game hud, basic inventory
    Two generic weapons, cycle them with mouse scroll
     Object structure


Example Game:
    ¶ Still not largely discussed, but would be great to have a puzzle/small/feature_showcase game as example of the game engine

Navigation:

    Fix Navigation bugs
    System to add objects to the list to build navmesh
    Navmeshes built using collision meshes
    If you want to use navigation in a open world game, you will probably use some mesh streaming, so, you probably want to stream also the navmesh.
    • The problem when you load the navmesh from disk is that you only load one navmesh at time, so it needs to merge different navmeshes into one.
    As you can see on these videos, GTA IV have some particular navmesh configurations
    • https://www.youtube.com/watch?v=er3wgYIl0ro
    • https://www.youtube.com/watch?v=80AQlT9iZtQ
    • For example, if we want to do car bots that only drive through the right side of the road, but when hit or porsuing the player can get out of the street and navigate through other "surface types".
      We need to set these surface faces inside a 3d application, settting a material that corresponds of determinated area, like a ladder, road, hiding spot or anything else. (We can be able to generate the navmesh in the editor, export it, import in Blender, modify it and reimport into Grit)
    Make blender compatible with the new editor map, that you can export the objects position and navmeshes.
    Include offmesh navigation links inside the map file

    Write an example bot that randomly walks into scene seeking for enemies, and when finds a target shoot it with a fire weapon. (needs physics constraints and ragdoll to hit test, but for now we can use a cylinder instead)
    Set the character to a ragdoll when hit by a car (can be pushed to another place), and if still alive stand up and keep moving (need to find another valid navmesh point).
    ¶ Characters and vehicle driven by bots needs different navmeshes (i.e. a Character is small than a car, so can pass through thin places)

Want to contribute? See THIS

Other ideias?, Want to remove some dumb ideas?, Do you know libraries or papers about how to implement them? Please let me know! :D


Last edited by Augusto Moura on Mon Nov 07, 2016 10:03 am, edited 1 time in total.
remove Done items


Top
 Profile  
 
 Post subject: Re: Just another roadmap..
PostPosted: Mon Feb 01, 2016 9:15 am 
Offline
Newbie

Joined: Fri Jul 26, 2013 5:30 am
Posts: 141
i dont now if any of these will help

http://advances.realtimerendering.com/s ... 220dpi.pdf

http://blog.selfshadow.com/publications ... slides.pdf

http://www.isprs.org/proceedings/XXXV/c ... rs/627.pdf


Top
 Profile  
 
 Post subject: Re: Just another roadmap..
PostPosted: Sun Mar 06, 2016 12:31 am 
Offline
Newbie

Joined: Fri Jul 26, 2013 5:30 am
Posts: 141
game controller library to make easer to supper them


https://github.com/ThemsAllTook/libstem_gamepad (very active ) forum for this - https://forums.tigsource.com/index.php?topic=10675.0
http://gainput.johanneskuhlmann.de/
http://www.glfw.org/

https://github.com/wgois/OIS


Top
 Profile  
 
 Post subject: Re: Just another roadmap..
PostPosted: Sat Apr 02, 2016 7:13 pm 
Offline
Newbie

Joined: Sat Apr 02, 2016 7:07 pm
Posts: 1
car damage system

just use rigsofrods for that, and it will allow car to be at simulation level instead of just a standard physics driven car.

https://sourceforge.net/projects/rigsofrods/


Top
 Profile  
 
 Post subject: Re: Just another roadmap..
PostPosted: Tue Apr 12, 2016 5:54 am 
Offline
Newbie

Joined: Fri Jul 26, 2013 5:30 am
Posts: 141
https://github.com/RigsOfRods/rigs-of-rods


Top
 Profile  
 
 Post subject: Re: Just another roadmap..
PostPosted: Thu Apr 14, 2016 4:27 am 
Offline
Newbie
User avatar

Joined: Fri Mar 21, 2014 12:25 am
Posts: 116
Location: Rio Grande do Sul
Rigs of Rods have a really bad performance for me, but i will try to get it working on Grit :)


Top
 Profile  
 
 Post subject: Re: Just another roadmap..
PostPosted: Thu Apr 14, 2016 12:31 pm 
Offline
Newbie
User avatar

Joined: Fri Mar 21, 2014 12:25 am
Posts: 116
Location: Rio Grande do Sul
Well, nevermind
my computer probably can't run it, RoR itself with all settings set to low runs really bad, and with two cars almost crashes.. doesn't worth a try


Top
 Profile  
 
 Post subject: Re: Just another roadmap..
PostPosted: Wed Nov 02, 2016 5:47 pm 
Offline
Newbie

Joined: Fri Jul 26, 2013 5:30 am
Posts: 141
This is a good roadmap


Top
 Profile  
 
 Post subject: Re: Just another roadmap..
PostPosted: Wed Nov 02, 2016 5:55 pm 
Offline
Newbie

Joined: Fri Jul 26, 2013 5:30 am
Posts: 141
Navigation pathfinding paper very detailed - http://www.cs.ualberta.ca/~mburo/ps/the ... n_2006.pdf


Top
 Profile  
 
 Post subject: Re: Just another roadmap..
PostPosted: Mon Nov 07, 2016 10:36 am 
Offline
Newbie
User avatar

Joined: Fri Mar 21, 2014 12:25 am
Posts: 116
Location: Rio Grande do Sul
Something cool for Recast navigation: (automatic cover system, vaulting, climbing...)

Description

Demo + Source

Image

-


Top
 Profile  
 
 Post subject: Re: Just another roadmap..
PostPosted: Sun Nov 13, 2016 12:01 am 
Offline
Newbie

Joined: Fri Jul 26, 2013 5:30 am
Posts: 141
The recast stuff very cool


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 11 posts ] 

All times are UTC


Who is online

Users browsing this forum: Bing [Bot] and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Localized by Maël Soucaze © 2010 phpBB.fr