Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

  • Days Won


mrDIMAS last won the day on June 3

mrDIMAS had the most liked content!

Community Reputation

169 Neutral

About mrDIMAS

  • Rank

Personal Information

  • Role
  • Interests


  • Github

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. mrDIMAS

    Modern game engine written in C

    Another small report of what was made since last post: Added play-once sounds with auto-lifetime Added stack panel to GUI Fixed various bugs with renderer Improved sound API Added GJK-EPA collision solver - probably the most important feature for physics - it allows to solve collisions between any convex shapes (sphere, capsule, triangle, cone, cylinder, point cloud, etc.). But engine still lacks support of these shapes from the API side - this is work-in-progress and should be done soon. Bug fixes.
  2. mrDIMAS

    Modern game engine written in C

    No, I have custom loader. Engine have only one dependency - miniz_tinfl - to decompress fbx arrays, everything else written from scratch. Also here is small report of what was added/improved/fixed. Added spot and omnidirectional shadows Added frustum culling Improved font rendering Fixed bugs in serialization of scene nodes Fixed mistakes/inconsistencies in docs Const-correctness was improved Fixed sound loading bug Improved resources management Development goes relatively slow because I have fulltime job
  3. Hello! For almost two years I'm working on new game engine written fully in C (C99 to be precise). My goal was to write an engine with as much less dependecies as I could so it can be easily built and ready to use. Also it does not require you to build it separately - just add two files to your project. Now I think its the time to show it to everyone - it has no fancy name - it called just Dmitry's Engine - https://github.com/mrDIMAS/DmitrysEngine It has following features (shameless copy-paste from github page) Single compilation unit - no need to build as separate library: just add de_main.h and de_main.c to your project. C99 with full compatibility with C++. FBX support - both ASCII and binary Scene graph with these nodes: Base (pivot) Mesh Light Camera Particle system Automatic assets (resources) management Textures Models Sound buffers Modern rendering techniques, renderer based on OpenGL 3.3 Core. Deferred shading Normal mapping Skeletal animation Instancing Particle systems (very simple for now) Sound 2D + 3D WAV format support Streaming for large sounds TTF fonts support (compound characters support is not implemented yet) Advanced GUI (inspired by WPF) with declarative UI creation using designated initializers with these widgets: Window Text box Text block Border Button Scroll bar Scroll viewer Scroll content presenter Canvas Grid Slide selector Image Check box Path finding (classic A* algorithm) TGA image loading Ray casting Position-based physics Built-in save/load functionality via object visitor - state of engine can be saved/loaded just in a single call. Documentation - almost every function of the engine has description in Doxygen format. Extremely fast compilation, thus very low iteration times - feature can be tested very fast. Easy to hack and modify Currently the engine lacking tutorials and standalone examples, but there is a relatively big example - the game (https://github.com/mrDIMAS/Shooter) I'm writing using the engine - it can be used as good source of code examples.
  4. After some long break in solving this problem I finally implemented working solution. Each scene node has a pointer to resource from which the node was created, also each node contains pointer to original node that stored in resource. When I'm doing a save, at first I'm saving resource descriptors (just a file name and some meta info), then I'm saving nodes with info about which resource is it using. On loading for each node I'm resolving pointers to original nodes from resource as well as pointers to resource (scene.c and node.c). Pointers resolved by node names - which is quite unreliable because node name can change and then it is impossible to find from which node in resource a node was instantiated, but I'm still do not know better way. In similar way I'm restoring pointers to render data for meshes ( mesh.c) - just find a node in resource and grabbing all render data from it. But still I need to somehow resolve changes of position/scale/rotation (transform) of nodes in resource so when I'm loading a save nodes on scene will get exact transform from resource. This can be done by saving a flag near node attribute like "has_changed" or something which is indicating that node attribute was changed during runtime. Then on load I can check this flag and if it is not set, then set attribute of node using value from resource.
  5. Thanks for replies, guys! Let me clarify my situation a bit: 1) My resources are modifiable - I can create a save file which uses a resource and then I can modifiy it, and I still want my save be loaded correctly (as much as possible, of course). 2) Resources can be loaded during runtime at any moment 3) Resource instances (nodes with shared graphical data) uses their own nodes (copy of nodes from model) - this gives me ability to animate nodes independently for each instance and still get benefits of instanced rendering. My very first thought was to just save some path to a resource file along with node data. Also create a section of resource references in a save file. Then on load I can load resources first, put them in separate graphs. In the moment when I'm loading a node with a path to resource I can try find node in the loaded resource by its name and restore graphical information from it (basically - meshes which I need to render). But what should I do if hierarchy of nodes in resource was changed? I've seen that Unity engine doing a good job when model's asset changes - it is somehow keeps nodes on scene in sync with nodes in resource, but preserving transforms of nodes which were modified by user. I've tried to search some papers about this, but unfortunately - no luck.
  6. Hello! I have a scene graph in which I can load models from external resources (model.fbx, for example) Then I'm making a save in my game - just saving the whole scene graph. And this is the point where I'm stuck - how to save nodes that are actually references nodes which are in external resources? Also, is that even possible to keep part of scene graph (for example which is in red square) in sync with a model?
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!