Jump to content
  • Advertisement

All Activity

This stream auto-updates     

  1. Past hour
  2. Hi everybody, Since 2004, Xilvan Design building 2D & 3D games in Blitz3D, we are now showing to you our kindly official gaming related pages. - The Xilvan Design Website - (please click on each links, download games & bookmark the pages): Lights of Dreams IV: Far Above the Clouds v12.07. Candy World II: Another Golden Bones v17.57. Candy Racing Cup: The Lillians Rallies v5.07. Candy World Adventures IV: The Mirages of Starfield v9.37. Candy to the Rescue IV: The Scepter of Thunders v11.57. Candy's Space Adventures: The Messages from the Lillians v22.75. Candy's Space Mysteries II: New Mission on the earth-likes Planets v12.75. -"Lately, I fixed the colors of the ambient lights, adjusted the starlight coming from Galaxies, now the dogs may Walk, Run, Jump, Fly together, Grab bones, Pastries, Golden Bones, Hearts, Crystals, attack with freesbies." -"Now, it will be possible to edit all the levels of the game in Candy World Adventures IV v9.37. All 28 levels and 8 more in the future." -"I Want to continue Candy Racing Cup: The Lillians Rallies. I want to add more circuits, characters & cars." -"In the near future, I'm up to create a whole new Spatial Mode in Lights of Dreams V. New Space travel possibilities will be available before 2020 in our games." Once more, here is my YouTube Channel, where we are showing Candy's & Lights of Dreams series. Each games is free to play for the moment! - My Youtube Channel - Hope you'll like our games, downloads & watching our videos! We also refreshed the screenies, now they are up to date! Friendly, Xylvan, Xilvan Design.
  3. Tomas Arce has released LIONant Properties, an open source C++ 17 Property / Reflection system useful for games and other applications. The project is intended for developers to have a default system to use for C++ properties. Read the documentation here. The code is MIT Licensed and includes recent imgui integration. Learn more at https://gitlab.com/LIONant/properties. View full story
  4. Tomas Arce has released LIONant Properties, an open source C++ 17 Property / Reflection system useful for games and other applications. The project is intended for developers to have a default system to use for C++ properties. Read the documentation here. The code is MIT Licensed and includes recent imgui integration. Learn more at https://gitlab.com/LIONant/properties.
  5. Today
  6. Robert Vanderaarde has released an open source tool built to create texture atlases that support pixel padding. Written in C#, the tool is useful for using a texture atlas in terrain generation. The reason the padding is necessary is that when you create mip maps for the textures, without the padding there is often bleeding on the texture atlas. The open source tool is available on Github at https://github.com/robertvanderaarde/TextureAtlasPadder. View full story
  7. Robert Vanderaarde has released an open source tool built to create texture atlases that support pixel padding. Written in C#, the tool is useful for using a texture atlas in terrain generation. The reason the padding is necessary is that when you create mip maps for the textures, without the padding there is often bleeding on the texture atlas. The open source tool is available on Github at https://github.com/robertvanderaarde/TextureAtlasPadder.
  8. A new version of CTAA is available for Unity on the Unity Asset Store. For sale at half the normal price, CTAA is designed to help Unity developers achieve next-generation off-line cinematic render quality results in realtime. CTAA reduces aliasing from specular highlights and bright pixels, especially when using post effects such as Bloom or Depth of Field including Aliasing on alpha tested edges. Temporally, new pixel data is gathered from the past and extrapolated to future frames for final re-construction based on velocity information. Performance is approximately equivalent to standard FXAA. Watch the video and click here to learn more.
  9. A new version of CTAA is available for Unity on the Unity Asset Store. For sale at half the normal price, CTAA is designed to help Unity developers achieve next-generation off-line cinematic render quality results in realtime. CTAA reduces aliasing from specular highlights and bright pixels, especially when using post effects such as Bloom or Depth of Field including Aliasing on alpha tested edges. Temporally, new pixel data is gathered from the past and extrapolated to future frames for final re-construction based on velocity information. Performance is approximately equivalent to standard FXAA. Watch the video and click here to learn more. View full story
  10. I'm not a fan of handles as it doesn't play well with oop. I would prefer going the pointer route. So you are saying shared and weak ptr's are ok when needed. And I should use raw ptr when possible? I've worked on projects that use handles and others that use smart pointers. Both could work, I just prefer handles, it's more explicit and safe to me. Otherwise, in the pointer-case, I'd use raw pointer for situation where I just need to read/write from it, where I do not need to remember which specific object I'm working with (which is 99% of that cases). and this is done to avoid needless ref count increments. With handle is more or less the same thing, you remember the handle only when you want to keep track of specific object otherwise you obtain a pointer to it for read/write and that's all.
  11. Gnollrunner

    Game Engine API, smart pointers or not?

    No problem. Good luck with your project!!!!
  12. Tim Leijten

    Game Engine API, smart pointers or not?

    Okay, sorry. I didn't realize.
  13. Gnollrunner

    Game Engine API, smart pointers or not?

    Here's the thing ..... It wasn't clear you were going to actually save the pointer outside of the API in some object. I was thinking you would get the pointer, use it for something and be done with it. In the later scenario the only way it would change is because of another thread. If you are going to save it, yet also want it to be able to be invalidated, then yes, you need something like a weak pointer.
  14. Tim Leijten

    Game Engine API, smart pointers or not?

    No no. I wasn't trying to be mean. It's just something I notice in general, both here and on reddit, people expect that if something changes it must be another thread. Which I find interesting.
  15. Gnollrunner

    Vulkan? OpenGL? What........?

    Mostly graphics, animation, physics..... what have you. I can work around what's missing. I'm just trying to get out of writing everything myself. While this may be true, I do need it and other apps that have needed it like Start Citizen and Dual Universe are using custom or pricey engines that support it. I need to be able to go from orbit to the surface and messing around with all sorts of offsets to handle this makes things more complex. One issue is seams that appear in between chunks if things don't match up perfectly. Yes not for those things but for large terrain it's highly desirable. I support more than 1 precision now for many things. My matrix and quarternion classes are templates. Yes I do this now. Everyone that has to support large terrain does this and that probably won't change. However keeping track of things on the CPU and server side is sill much easier and faster with 64bits. CPU double precision is not particularly slow as it is on GPUs.
  16. LorenzoGatti

    Large Tilemap Storage

    You can tile an infinite plane with rectangular chunks and load them on demand: implement rendering of the part of a chunk that intersects the current screen viewport (clipping, at most, part of the tiles along two adjacent sides). If a chunk is the same size as the screen, at most 4 chunks in a rectangular tiling have a visible portion: draw their visible portions. With smaller chunks you'd have more overhead (and 1800 tiles represent a small tilemap, there's no reason to go lower resolution), while with larger chunks the worst case of 4 chunks would be the same. Meanwhile, load or generate procedurally in another thread or in pauses adjacent chunks within a certain distance from the viewport, and discard chunks outside another (bigger) distance from the viewport. In the simplest case, you can keep the whole map in memory (in chunks) and "load" chunks implicitly into cache memory upon access. Note that with a simple 2D array layout the cache only needs to contain 4 chunks at a time, with 25% utilization at worst, rather than a very sparse portion of very large arrays)
  17. I've got a single vertex buffer and an index buffer for a cube in Directx9. I now want to generate a LPD3DXMESH object from them, so that I can manage mouse picking and other stuff with the cube model. How can I achieve this? Here's the code of my vertex and index buffers: CUSTOMVERTEX vertices[] = { { -3.0f, 3.0f, -3.0f, D3DCOLOR_XRGB(0, 0, 0), }, { 3.0f, 3.0f, -3.0f, D3DCOLOR_XRGB(0, 0, 0), }, { -3.0f, -3.0f, -3.0f, D3DCOLOR_XRGB(0, 0, 0), }, { 3.0f, -3.0f, -3.0f, D3DCOLOR_XRGB(0, 0, 0), }, { -3.0f, 3.0f, 3.0f, D3DCOLOR_XRGB(0, 0, 0), }, { 3.0f, 3.0f, 3.0f, D3DCOLOR_XRGB(0, 0, 0), }, { -3.0f, -3.0f, 3.0f, D3DCOLOR_XRGB(0, 0, 0), }, { 3.0f, -3.0f, 3.0f, D3DCOLOR_XRGB(0, 0, 0), }, }; d3ddev->CreateVertexBuffer(8 * sizeof(CUSTOMVERTEX), 0, CUSTOMFVF, D3DPOOL_MANAGED, &vertex_buffer, NULL); VOID* pVoid; vertex_buffer->Lock(0, 0, (void**)&pVoid, 0); memcpy(pVoid, vertices, sizeof(vertices)); vertex_buffer->Unlock(); short indices[] = { 0, 1, 2, 2, 1, 3, 4, 0, 6, 6, 0, 2, 7, 5, 6, 6, 5, 4, 3, 1, 7, 7, 1, 5, 4, 5, 0, 0, 5, 1, 3, 7, 2, 2, 7, 6, }; d3ddev->CreateIndexBuffer(36 * sizeof(short), 0, D3DFMT_INDEX16, D3DPOOL_MANAGED, &index_buffer, NULL); index_buffer->Lock(0, 0, (void**)&pVoid, 0); memcpy(pVoid, indices, sizeof(indices)); index_buffer->Unlock();
  18. Gnollrunner

    Game Engine API, smart pointers or not?

    It wasn't clear to us that you were going to save the pointer, go off and do something else and then come back later and expect it to be intact. So now it's a little more clear.
  19. Tim Leijten

    Game Engine API, smart pointers or not?

    Thanks for your reply! I agree weak_ptr is the best choice. Just wasn't sure. This is my first game engine and I don't have much experience with C++ yet, so I don't want to make it too hard for myself. I might do my own reference counting at some point, but not yet.(I don't even have an idea how I would do that.)
  20. Gnollrunner

    Game Engine API, smart pointers or not?

    Yes, so this is what weak pointers are used for. I just was not clear if this level of control was part of your API. You can in fact use a weak pointer in this case. That being said as I mentioned in reddit, the standard library smart pointer implementation has a lot of overhead, so there are trade-offs. But if you don't want to do your own reference counting system this might be the best choice for what you want to do.
  21. Tim Leijten

    Game Engine API, smart pointers or not?

    E.g. something a player does causes the object to delete itself. Why does everyone think it has something to do with threading? It's posible, but I don't think it's needed because in general, the pointer never changes unless you delete it. But I'll keep it in mind. I agree it's best to have one owner, and it would work for me I think, but there is unfortunately no way to check if a pointer is valid. Making it a bit harder to do. Handles aren't a bad idea, I just don't like to have my game code cluttered with handles and getPointerByHandle's. And even worse would be switching the entire engine to handles.(I wouldn't have access to classes) So I think I'm just going to take the smart pointer route where needed. Thanks for all your help!
  22. Hello, it's that time of the week again - a Dev Diary -day! This weeks topics are yet again around the after effects project and it seems I'm close to having results that I can live with. The Long Road of Fiddling For the past week I have continued to test several ways of bringing more depth to the floor tecture, to make it pop out more and seem a real, 3D icy surface, but it seems to be eluding me still.It might be, that the depth wont come out of it properly until I have finished the 3D text layers, which I will propably start out next later this week, after some tweaks. But, pictures tell more than just words and here is a sample of what I have been fiddling with. The picture makes it quite self explanatory. I have been comparing results on various different combinations of texturing effects, with tiny but visible differences on the results. I'm not sure if I'm doing something wrong, or was the Normal and Bump maps generated in Photoshop not detailed enough, one would be too low of a resolution (1080p) for example. I will try rezising the original picture to 4k x 4k or 8k x 8k and taking another Normal and bump maps from that, see if that brings better results. There also seems to be a relatively big difference on how much the bump maps affect the depth of the cracks by it self, compared to when used with a normal map. If I only use the bump maps, it has only half of the effect at best cases (thus far), compared to how much detail the Normal maps produce. It might be also, that I just don't know how to use them properly, which is entirely possible. Currently I use them just like textures and make sure that the texture is the first thing rendered, Normal maps the second and Bump maps the last. I still like to include the bump maps to the finished looks, as that seem to bring out a very slight, but visible change to the end result. From the results seen above, I took the last one and combined HQ and LQ textures together and added the mapping textures straight to the underlying texture file it self, to make the details pop out the most. On the above picture it has some lighting issues, as by it self, I didn't like it one bit. The problem was remedied simply by changing the lighting options. Since I was nearing the zone state while fiddling with the settings, I didn't take an intermediary picture between that comparison and the next results I came up with, after a full days work of exploring. The Contender I'm lucky to have enough patience to enjoy exploring several options. I literally scrolled through the After Effects "Effects and Filters" list and I discovered the "Caustics" effect. Made sense, as I have heard this term used several times in tutorial videos about how material settings work and affect the reflective properties of the object in blender and unity. Here is where I'm at currently; Granted, there is much more changes to this one than just "Caustics". I also went overkill and copied one more Snow layer and turned it's opacity to 25%. I also added "Bevel Alpha" effect to every layer, in an attempt to bring out as much depth as I could and to some decree, it did help the issue. Now that I put caustic effects on the floor asset, it looks much more realistic in terms of color variation, as every ice has imperfections in it and this brings it to the next level compared to just using the snow layer as shadowing spots. I might need to do something about the brightness though, as the rendered picture is brighter than the one seen in the enlargement - a good reminder to always test render before the final render. The "Bevel Alpha" worked best on the snow layer actually, which made it look more 3D, as waves and/or bumps on the surface of the ice. The background texture melds into the effects more nicely now, as caustics ads several effects to the surface by it self, one of which is more natural looking opacity levels between the texture and surface layers, as it includes lighting, blur and several other effects all in one, which interact in different way than adding those effect separately. At least, this is my experience with fiddling with the settings of "Caustics" -effect. All in all, the direction seems promising. Now I will try a few more things before I start making the 3D text layers for the "Now Playing" info. First I will try comparing the results to the 4k and 8k versions of the textures and normal maps, which shouldn't bee too much of a hassle and try to fix the lighting settings within the "Caustics" effect. For some reason, the end result gets insanely bright and all the details disappear behind this ultra bright light on the surface. It might be that the caustics effect does not like the "Bevel Alpha" -effect, as if I have understood correctly, lighting properties works in the alpha layer as well. Now then, back to work! This is it for this weeks Dev Diary and I hope to see you on the next one And as always, you can check out every possible mid week announcements about the project on these official channels; • YouTube • Facebook • Twitter • Discord • Reddit • Pinterest • SoundCloud • LinkedIn •
  23. Tim Leijten

    Game Engine API, smart pointers or not?

    No. I don't use threads. If obj A creates obj B and stores a pointer to it.(E.g. to get the position or communicate something else). The because of some player action, obj B is deleted. Now obj A has an invalid pointer. So obviously I want there to be a way for A to check if B exists. E.g. a weak_ptr. Anothrr solution would be a messaging system or a table containing all valid GameObjects(and then check if the pointer is in there), but that's waayyy more work than using a weak_ptr. I'm not a fan of handles as it doesn't play well with oop. I would prefer going the pointer route. So you are saying shared and weak ptr's are ok when needed. And I should use raw ptr when possible?
  24. lawnjelly

    Vulkan? OpenGL? What........?

    When you say game engine / graphics engine, what functionality exactly do you need? It is probably a pretty low priority for most general purpose engines, as most people don't need 64 bit coordinates, and many of those that think they do can usually get by using a different method (moving origin etc). It's unlikely to be necessary for e.g. character animation / skinning, particle effects... So if you are making a general purpose engine, you would presumably either: Make all 3d math 64 bit and make 99.9% of people pay the cost for something they don't use Support more than 1 precision throughout, which could potentially multiply complexity and bug potential unless done very carefully If it is just CPU side, can't you use your own 64 bit classes, then downsample to 32 bit for rendering? Dave Eberly's classes (https://www.geometrictools.com/) are usually designed to be able to change the bit depth if I remember right. Most of mine are written similar way with templates so it is easy to change whether a float is 32 or 64 bit. Without more information is hard to say more. API wise for multiplatform I bow to other's knowledge, but personally I'd be strongly tempted to use a third party abstraction layer like diligent engine or bgfx if at all possible. As Hodgman says it depends very much on what you mean by multiplatform. There's consoles, and then there's the wild west of OpenGLES on mobiles.
  25. My personal preference, be it C, C++, Java, .NET, whatever, is to have functions either return unique ownership (normally a new object, which is then the sole responsibility of the caller), or to return a reference/pointer to something the API still owns and manages. In C++ `unique_ptr` and raw pointers fulfil that nicely. For function parameters, the same deal where possible, the API either takes ownership, or just uses the reference for a fixed duration, normally the function call itself. Sounds more like a `create`. I think the problem here is the "deleted at any point". What is able to delete it, why is it? Are you multi-threading the game logic? You definitely don't want an API design where a pointer/reference/etc. gets invalidated by some other thread, maybe before a create/get function even returns. A solution I used with a couple of things was to say my object references must stay valid during a particular update frame (I was essentially storing them in std::vector). This meant any pointer within an update was guaranteed safe, but I had to use unique ID's to track specific things between frames. I think it is important though, even if you do use "shared_ptr" or "handle", or even in languages like Java and .NET, to try and stick to a single ownership model for object lifetime where possible, as it is easier to think through, and even garbage collector languages have things it does poorly (Close/Dispose/etc.) or the possibility of memory leaks (e.g. forgetting to remove things from collections). e.g. in this case you object is probably still "owned" by the scene, and once removed it is marked "dead", removed from the scene collections, any getter fr it returns null, it's not rendered, no physics, no updates, etc. and any remaining references are mostly just a safe way for other objects to see it "is dead" in a safe way. `unique_ptr` has literally zero cost, `shared_ptr` you probably want `enable_shared_from_this` (or traditional intrusive ref counting). You probably regardless want to avoid using heap dynamic allocations for objects. The fastest is generally going to be a vector<T> of values, due to continuous memory, but sometimes that is not practical.
  26. RhinoBladeX2

    Introducing Myself

    hi you my call me rhino would love to chat about blender, gimp and 3d design learning all the time. hope we can be friends I uploaded picture's for everyone
  27. 2019 april 22. -Some graphics bug causing a line on background on some computers were fixed . -Animation code is now more optimized. -The software renderer is optimized. -Fixed a loss of keypress-processing on very low frame/second when running on Linux. -Added new code paths for x86-32 and ARM builds that uses more branching and less FPU instructions. -5% overall speed-up. 40% speed-up on old Cyrix based computers. -More than 50% speed-up in the Android version on ARM CPU-s.
  1. Load more activity
  • 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!