Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

1929 Excellent


About GuyWithBeard

  • Rank
    Advanced Member

Personal Information

  • Role
    3D Artist
    Level Designer
  • Interests

Recent Profile Visitors

14855 profile views
  1. GuyWithBeard

    AngelScript 2.34.0 is out

    Hats off to you sir! Thanks!
  2. GuyWithBeard

    Where do you get your sound effects from?

    https://www.soundsnap.com/ is good as well.
  3. That is actually surprisingly close to what I had in mind, but I did not know the term "importance sampling". Should make it easier to do additional research if needed. Thanks!
  4. Hi, I have a heigh tfield terrain which I want to "paint" grass and other foliage meshes onto using a density map. For example, let's say I have a RGBA texture which is stretched onto the terrain. This would give me the ability to paint 4 different kinds of foliage meshes onto the terrain, each using the value in one channel to represent the density. I have some (probably bad and/or slow) ideas on how to calculate the world space points for each grass blade mesh, but I figured I should check here if there are any standard ways of doing this. My terrains are fairly large and I need to calculate thousands of world-space points for blades of grass. The terrains are static though, so I can potentially do this offline in my editor if doing it at runtime turns out to be too slow. How is this normally done? Also, is it feasible to do it on the GPU using only the height field and distribution map as input or should I pre-generate the points (or do them on the CPU at runtime)? Thanks!
  5. GuyWithBeard

    DX12 or Vulkan for hobbyist?

    My two cents. I have implemented both a DX12 and an Vulkan backend for the engine I am using and I mostly did them both at the same time. First of all, the APIs are surprisingly similar. Implementing a common API on top of them is a lot more straightforward than doing the same for OpenGL and D3D9. That said, there are differences and if I was to choose I would do Vulkan first. There are certain aspects of Vulkan, eg. render passes, that you might want to keep around in your common API. These are trivial to emulate on D3D12. On the other hand, if you make an API without them and later want to support Vulkan it might be trickier, maybe... I don't think you can go massively wrong either way but I would start with Vulkan.
  6. GuyWithBeard

    Engine UI

    Using ImGui for an in-game editor works fine. I am using ImGui myself for debug and development UI but a separate UI system for the player-facing UI. Since people are listing middleware now I am just gonna mention https://www.noesisengine.com/ which I am using myself.
  7. GuyWithBeard

    Engine UI

    I have done something similar to Capcom's RE engine solution (at least based on godofpen's explanation, they require you to login to download the document and, meh). My editor is a WinForms application that starts up and connects to an instance of the game running in a special editor mode. The game then renders to a panel in the editor window, making it look like everything happens inside the same program. Technically the editor and the game are two different processes, but they keep track of each other reacting if the other one crashes etc. You can see the editor in action in this development video: https://www.youtube.com/watch?v=fUFVh-2Aefg (video-production-wise not that great I know, working on getting better) There are pros and cons to doing it like this: Pros: The editor is true WYSIWYG since the game's native renderer is used to render the scene, as opposed to having a separate editor. The editor UI is quite easy to keep responsive as most of the heavy stuff is performed by the game side. It does mean you have to manually block the user from doing stuff while the back-end is busy though. You get to use the large library of ready-to-use components available for WinForms (also true for WPF and, I assume, Qt) In my case, since I actually run the game exe through the editor, I can add editor-side functionality on the game side. Eg. if I have an object type in a game which needs to behave in a special way in the editor, I can put that code into the game exe and the core engine libraries aren't touched. Cons: Many things that are simple in a single-process editor become much more complicated. Eg. changing the name of an object in the scene involves a step on the editor side, a step on the game side and finally a step on the editor side to keep everything in sync. Debugging the editor becomes a lot trickier since you are working with two different processes. My case is complicated further by the fact that the editor functionality wasn't planned from the beginning. Instead, the editor was bolted onto the engine at a later point. Because of this I still don't have "Play in editor" functionality, ie. the kind of thing you get by hitting Play in Unity. It is certainly possible to do but I would require me to re-architect some core parts of the engine. Another issue is that parts of my engine runtime never expects there to be any issues with missing resources or the like. Most editors show an error message in these cases. Depending on the case, my editor might just crash because the loading code hasn't had to handle these cases until the editor part was bolted onto the core engine. Most of these things are fairly simple to fix though... If you are thinking about using web technology for your editors it might be worth reading through Insomniac's postmortem about their experiences: https://deplinenoise.files.wordpress.com/2017/03/webtoolspostmortem.pdf They switched away from web tech some time ago and it sounds like they weren't having that much fun going that route after all.
  8. GuyWithBeard

    Floating-point precision problems with world-to-screen

    I would never do that. To determine if the object is in front or behind the camera you can just do a dot product with the camera-to-object vector and the camera-forward vector and check the sign. I was lost in NDC-land because you obviously need to do the perspective divide for the marker when the object is on-screen, and I did not realize it makes sense to switch to another space when the object goes off-screen. Instead I let the values get "extrapolated" outside of the view frustum when the object went off-screen, which worked well except when the object's depth value was close to zero. Anyway, thanks for your input, and I am glad if this helped someone else
  9. Hi, I am working on a target reticule for a 3D game I am working on. You know, your typical HUD element that sits on top of an object in the world. If you turn your camera away from the object so that it goes off screen the marker sticks to an edge of the screen, giving you a hint at how to turn to face it again. In some games these turn into arrows as they stick to the corners etc. I am doing it by transforming a world space coordinate to NDC through my camera, something like this: Vec4 posHomogeneous(worldPosition, 1.0f); Vec4 posInClipSpace = posHomogeneous * camera->getViewMatrix() * camera->getProjectionMatrix(); Vec3 posInNDC(posInClipSpace.x / posInClipSpace.w, posInClipSpace.y / posInClipSpace.w, posInClipSpace.z / posInClipSpace.w); That works well in most cases, and from the NDC coordinate I can get the screen coordinates to draw the HUD element etc. However, in some cases this introduces some precision problems which makes the HUD element jump around on the screen. It seems to me it comes from the w component of posInClipSpace. Imagine you are standing at (0, 0, 0) and the target object is at (100, 0, 0), ie. a hundred units to the right of you. If you turn left/right the object switches from being "in front of you" to being "behind you" but is stays very close to zero. This, of course also makes posInClipSpace.w very small, which, in turn causes the NDC values to jump around as the perspective divide (third line above) is performed. How would you solve this? I was thinking you don't necessarily need to use clip space or NDC space for off screen objects and instead rely on view space for that, but it somehow seems "mathematically incorrect". Any ideas? EDIT: Well, I tried simply feeding the view space coordinates into it and it works surprisingly well. Maybe this is the right way to go...
  10. GuyWithBeard

    Official SVN repo down?

    Ain't that the truth. Don't worry though, you are doing an excellent job with AngelScript!
  11. GuyWithBeard

    Which game engine for text adventure.

    You don't have to pay monthly. The single-user version has a perpetual license, and of course there is a trial. But yeah, it is not free, if that is what you are after.
  12. GuyWithBeard

    Which game engine for text adventure.

    Would articy:draft help you out? https://www.nevigo.com/ It is quite powerful when it comes to setting up conversations and other branching logic. It has a simulation mode which allows you to run the logic right there in the program and they ready-to-use integrations with unity and UE4. AFAIK (I haven't used the premade integrations myself) you can just drop an articy player into a unity scene and play the logic there without having to do much of anything on the unity side.
  13. I have been working solo on a project as a hobby for a few years as well as my main job for almost a year now, which means I have experienced two vastly different phases of the same project as a solo dev. These are my thoughts. It is indeed very difficult to work on a project all by yourself for a long time. The exact reasons why it is difficult varies between people, but I doubt there is anyone who feels it is easy. For me the biggest issue has, perhaps surprisingly, been motivation. As I said, I have worked on this project for many years now during my spare time, and motivation never seemed like an issue for me. I would come home from work and get to work on my own project and feel good about it. When I decided to concentrate on the project full time it never struck me that motivation could be an issue. However, working alone on a thing for a longer period of time does strange things to your brain (at least it does for me). There have been days when I have known pretty much exactly what to do and how to do it, but still something has been holding me back, draining my energy. Luckily I still work for my previous employer one week per month. I find that just being around other people gets the creative processes in your head flowing. You might discuss a particular problem with a colleague or friend, and immediately feel like you want to try out a solution. Obviously you can discuss these things with anyone, your friends, your significant other, etc. but to get the full positive effect you should talk with people who are genuinely interested in what you do. I am currently building a website for my company and project to get the word out there. Obviously I need to do this as part of the marketing I do, but it also helps you tremendously if you know there are people who are actively looking forward to your work. In closing, I would not discourage anyone from working solo on a project, it is quite liberating. But don't work ALONE on a project. Make sure you have people who are cheering for you, and you'll reach the finish line.
  14. Hi guys, I have been working on my indie game for about half a year now, and I finally summoned the courage to make a video about it. The idea, in the long run, is to turn the game into a commercial product but I want to get the game core loop into a workable state before I start laying out the plan for what the final product is going to look like. However, working on a game in a vacuum is rarely a good idea so I decided I should start keeping a devlog about the progress. It will allow me to get feedback on my work and also to raise awareness of the project. I will launch the website of the company and project soon at https://www.madrigalgames.com/ and when it goes live I would like to have a few videos already uploaded onto youtube, to make a bigger splash if you will I just finished uploading the first video in a series I call Duct Tape Development and it is now live on YT if you are interested. The idea of the series is simply to record myself implementing a feature or working on a task. I won't be planning these a lot in advance, and instead just kinda roll with it. Hence the name, Duct Tape Development. As I mention in the video, recording videos and explaining this stuff as I am doing it is all really new for me and I am not super happy with my own vocal performance during the video, but you got to start somewhere, right? Anyway, I hope this is interesting to some of you, if not ¯\_(ツ)_/¯ Have a nice weekend!
  • 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!