Jump to content
  • Advertisement

All Activity

This stream auto-updates     

  1. Past hour
  2. hplus0603

    Connections to/from India/UAE/Etc.

    There are at least three problems you can run into: 1) Latency (packet delay) because of both packet inspection, and the simple long transit with many hops going to where you're going. 2) Throughput ("bandwidth") will be lower if connections are shared or of limited capacity, because of distance of older technology or cost. This could be true even for the backbone/s of the country, or even shared trunks going into a cluster of countries. 3) Firewall blocking. Some countries (China) simply cut off a large number of sites they don't like, or that they can't "vouch for." Other countries will just "inspect" packets, or have a smaller block list. These are seldom well documented, and change based on policy and whim. All of these interact -- when latency goes up, the TCP window opening that's important for throughput takes much longer, leading to lower throughput. When backbones get clogged, packets are dropped, which leads to higher latency of the data in the packets that need re-transmission. You may be able to work around some of these problems, depending on what the application is. Caching data and updating it in the background is a good design pattern that lets the user interact with the application right away, assuming that data model makes sense. Moving data transmission to UDP, possibly with encryption, may avoid some TCP bandwidth and latency problems. However, testing and tuning these things really needs to be done from the locale in question, which makes development much harder.
  3. GoliathForge

    First Person Catcher?

    The blog entry title...not a question mark, proclaim that with exclamation. And, from observing your last project, [ fix your time step ]
  4. Nope, this is C++, where you are in full control of what happens. The language has lots of things to assist you in avoiding programming mistakes. Nobody is however forcing that on you though, and if you choose not to use them, that's fine by the language (ie you are in full control). The other side of the coin is of course that you are also responsible for not messing up. The language is not coming to rescue you from yourself. If that bothers you, use a different design.
  5. Today
  6. Main question: How are you all nowadays abstracting resource binding between D3D12 and Vulkan? The graphics backend for my engine was initially written in Direct3D 12, and the abstraction layer very closely mimicked that with the goal of being as thin as possible (many calls basically amount to passthroughs). I've recently started porting my graphics backend to Vulkan. I've actually found this to be very straightforward for the majority of the effort, the two largest differences of course being render target/framebuffer management and resource binding. Of those two topics, resource binding is the main area I have hang-ups on for best abstraction and implementation, and that is where I'm hoping for advice. I've got this working "well-enough", which is to say I can bind resources and they get where they need to go, but the setup I have feels brittle, for lack of a better word, and I consider it to be very much in a rough draft type of state. I've read a few posts here on the topic, but many are a few years old at this point. I'm sure best practices have evolved over time as people become more accustomed to working with both APIs. For example, this post is almost three years old to the date (https://www.gamedev.net/forums/topic/678860-descriptor-binding-dx12-and-vulkan/). Secondary question: Mostly out of curiosity, how universal is support for bindless textures? More specifically, if the targets are PC and current generation consoles, can a bindless model be fully adopted, or are there any platforms in this set that do not support it? Last question: What are your thoughts on a root constant/push constant versus a draw ID vertex buffer? I implemented this type of side-along vertex buffer a long while back in the engine's D3D11 days in order to bind one large constant buffer and index into it with an instance offset at draw time, and have honestly just not revisited its necessity until I reviewed it while making notes before I started working on the Vulkan port. Basically, I bind the actual vertex buffer and additionally to a known slot bind a draw ID vertex buffer that is just incrementing 0-4095 where the index is accessed through the startInstanceLocation parameter of draw calls. It certainly works well enough and keeps the number of setConstantBufferView-type calls very low, but it seems a root/push constant would achieve the same outcome without the additional vertex buffer being bound. Honestly, I should probably just profile and see, but figured I'd ask for general consensus while I was here Thanks for your time!
  7. Pepsidog

    Texture/Material issue in Unity

    I don’t know of any way, but I’m sure there is. If you have a budget, then the asset store can help. Otherwise, I can probably code you a solution.
  8. ethancodes

    Texture/Material issue in Unity

    I mean there has to be a better way of doing this. I just need to figure it out. lol. There are way to many references for me to manually reassign them every time a model gets a texture or material change, or a new component added to it. That's just insane. I'm positive there is a better way.
  9. Pepsidog

    Texture/Material issue in Unity

    I guess you’ll have to import everything manually : (
  10. I am looking for freelancers for my first professional project, but I don’t know where to find them.
  11. An interesting discussion, giving my two cents to that topic; I think a game engine is more than the game that is set on top of it. The game engine is at least at some point a genarlized framework that offers a feature set you make your game with. This feature set should include Basic platform handling and API abstraction (in C like languages) Provide some kind of memory management (in C like languages) Have a math library Have an input library Provide some kind of render engine because such features is what you need in every game regardless if it is 2D/3D or a text adventure (yes folks, text is also rendered!). I don't think a game engine needs a lot of asset pipelines, a complex editor or online.store capabilities as a must have to call them game engine.You could even have your game engine read a lua file and create the level from it without a visual editing feature, have a Blender plugin that converts assets into a format that could be directly loaded into the game etc. Unity, Unreal and Game Maker are designed as a whole in one solution what is absolutely ok but dosen't make them more a game engine as for example Urho 3D is a game engine. Today we are familiar with tools like a full blown level editor or even Intellisence when we code but I think convinience is ok for some point but convinience also makes us lazy. In my case, I designed my code to be modular, small and flexible, write my own tools and try to do as much on my own as possible. First this was the reason when I started learning all these stuff but today I came to the conclusion that doing stuff on my own has brought me to where I'm and I would rather use my own Array implementation than using the STL one, even if it takes longer to come to see results, even if my results don't 'look' that fancy as those from a million $ busines company. But back to topic, I also disagree with the statement of @1024 per se but just for the fact of the feature set that a game engine must have. For me a framework begins at the point of general code reuse, a game engine begins at the point when a framework reached certain feature set that is but not most entirely related to games (as described above) and anything beyond is a game creation suite. This said, lets be nice to each other 🤗
  12. Zaoshi Kaba

    Connections to/from India/UAE/Etc.

    At work I have encountered network issues with users in India. Main issue was slow internet speed - both, upload and download, were only 200 KB/s. But there weren't any issues with timeouts.
  13. DerTroll

    Rendering Order, Blending and Performance.

    What is usually done is that you separate opaque objects from transparent ones before rendering. Then you draw all opaque objects in front to back order. Afterward, draw the set of transparent objects from back to front. You can keep lists or separate them during the ordering of the objects. It's just one additional condition. However, there is another Issue: If you have transparent objects which intersect, you won't get a correct back to front order, regardless of what you do. So there is another technique called Order Independent Transparency (https://en.wikipedia.org/wiki/Order-independent_transparency). This might also be an alternative for you. Greetings
  14. I am not really sure how you are doing things, but it sounds to me like you are doing memory management yourself with new and delete. From what I understand, I think your class layout is suboptimal. Please provide a little bit more code, so that I could get a better understanding of what you are doing. It is definitely sub-optimal for various reasons. You listed some of them yourself. As @Gnollrunner mentioned, in C++ you should think about using smart pointers and STL/Boost/etc.-containers to handle memory management. They exist to avoid the problems you mentioned. You can use shared_ptr and weak_ptr in this case. Weak_ptr help you to avoid problems when the keyframe is deleted. Before you use the object it is pointing to, you have to check if it is still valid. Of cause, this introduces an overhead to your program. Additionally, shared ownership introduces a whole bunch of other issues, that might haunt you later. To my experience, situations like you described result from suboptimal and too complicated class layouts - not always, but often. Maybe you should check if the way you are doing things is really the optimal solution to your problem. Why does another class need direct access to a specific keyframe? Can your track class provide interfaces to do certain operations on a keyframe instead of exposing them to the outside? Again, a problem of your layout. If your object deletes itself from its owner then nobody else but the owner should be able to create such a class. What happens if you create a keyframe and don't add it to the track? What is deleted from the track in this case? So m_Track.Add(...) should take care of the construction. You can use a private ctor for Keyframe and give friend access to the track class to restrict construction outside of a track. Not the best solution, but works. I think the best solution for you would be to put some deeper thoughts into your ownership relations. In case I misunderstood you, forget about all the crap I wrote. 😛 Greetings
  15. So I've heard that rendering front-to-back can increase performance due to the z buffer. I understand how this works but what happens to blending? In order for blending to work you need to render from back-to-front. Moreover: For blending, the technique I know and use, is that in every frame I calculate the distances of all the objects from the camera, then order the objects in descending order from larger distance to smallest and then render first, the objects which are farther from the camera. This has two disadvantages, first the calculation of the distances and the ordering take some time and secondly I can't use front-back rendering. The first disadvantage can be optimized with a tree queue quite well but still I need to go through all the objects in order to generate that tree (nlogn total time). Is there a way to mix this blend technique with front-end rendering? or am I stuck except if my scene does not use transparent objects at all?
  16. We are currently building a team for a Narrative-Based 2D-Adventure. Examples for inspirations are Night in the Woods and Life is Strange. The Screenshots are from a technical prototype (Character & Art only dummy for demo-purposes) We are looking for a writer and an artist. Detailed Infos can be found here: https://meneither.itch.io/me-neither If you're interested, write to: MeNeither@web.de
  17. Hi all. Today I have published my second game for mobile devices. Swipe, Stop is a kind of super addictive puzzle game. The game contains over 200 unique levels. Try to find the best way to complete each level. Every level is possible to solve. Yet not everyone can do it! Do you think you can do it? Currently, the game is available on google play. Google Play: https://play.google.com/store/apps/details?id=com.Worthout.SwipeStop Any feedback will be appreciated.
  18. It's not really bad practice, in fact it's quite common. To do something like this in C++ you will typically use smart pointers. To support single ownership you can use std:unique_ptr. To support multiple ownership you can use std::shared_ptr. Alternatively you can write your own smart pointer system or implement a garbage collector but these options are less often taken.
  19. Hi everybody, Let's take the example of one keyframe class and one track class. The track contains an array of keyframe, so the track own the keyframe. Is it a bad practice to get the pointer of the track, the owner, in keyframe and remove from the track in the destructor? Basically doing "delete keyframe", you don't have to do remove from the track before the delete. But then the issue of this design is if multiple class share the element, it's not safe because it will remove only on the track but not the other place. Another issue is if you create the keyframe on the stack and add this keyframe in the track: { Keyframe keyframe; m_Track.Add(keyframe); } At the end of this scope, the keyframe will be removed from the m_track, it's not safe on this case too. What do you think about all that?
  20. Let's say we have multiple game engines, and they are all open-source. If we have a common way to be able to plug features in and out and transfer them between engines, this provides for the most flexible environment. If somebody only needs 2D sprites, input and basic collision detection, like OP, let's collect all necessary code into 3 files: Sprites.cpp Input.cpp Physics.cpp If somebody wants more, let them dive into and build from a codebase as complex as needed. I look forward to a day when it won't be a matter of choosing U-something versus framework versus bare C++, but only a matter of getting the right .cpp files into a directory (hopefully all licensed MIT or similar) and hitting play, as far as technical features go. The game is scripts, models, textures and audio. Individual title publishers should retain all the copyright to that. At the end of the day, it's not a matter of what the engine is, but whether the game is out, what it looks and sounds like, how many players it has and what the rating is.
  21. LiamBBonney


    Hi, my name is Liam, founder of TheIndieGamesLab! The hub of gaming experimentation. We believe that testing and experimenting with new and unique ideas is incredible important at TheIndieGamesLab. We also understand that when people have created something so different it is important to bring it into the spotlight, whether that be a new mechanic in a game, a new type of visual or even a streamer play testing and experimenting with new games. It is important to break pattern! If you feel your work is something unique and fresh we are here to help you not only promote your work but share ideas and experiment further with you. The idea of experimentation is fascinating to us. This is why the name TheIndieGamesLab has been chosen. We are fully aware of the importance of bringing great work and discoveries into the eyes of the public, ESPECIALLY when it’s a new and unique idea! Not only will we do our very best to help Indie Game Developers, we are helping any gamer with a new and fresh idea that they want to bring to the table or be displayed in front of the gaming community. This means we are here to help Indie Gamers, Indie Game Devs / Studios and so on! As well as helping the gaming scientists out there trying to bring something fresh to the lab, we want to inspire gamers to start experimenting and create something memorable. This is the start of something special. Together we can make TheIndieGamesLab the hub that gaming content creators can come to gain the recognition and support their work deserves! And become a movement! A movement to inspire and create! I have also created a discord server providing a platform for indie game developers to communicate with one another to help support each other and upcoming and existing projects. This server lets people get instant support from indie game devs that are just as passionate about it as you! You can also promote you new projects or post updates to your current projects, please com along, I look forward to seeing you there. Let's support each other in this crazy world that is indie games! Join now at https://discord.gg/efa6j3a
  22. What's wrong with just calling it "a game"? Does it sound too simple if it doesn't have a tech-sounding name? Are developers afraid that they won't be taken seriously unless they are making "something bigger than that"? These things are supposed to be reusable, right? I propose a limitation: you can't call your game code "an engine" until you use it to make more than one game. Until then, it is "just" a game. And there is nothing wrong in just making a game.
  23. Gnollrunner

    Help, a question regarding Game Development..

    We could compromise and call it a frame-gine 😁
  24. Green_Baron

    Help, a question regarding Game Development..

    How about calling the home brew to support the flow of a game a "framework" instead of "engine" ? With "framework" being api specific, game specific, maybe some platform independence built in, resource management, that stuff, while an (lowers voice in awe) "engine" (back to normal) contains much more middleware than that, more editors, more abstraction layers, more independence, more bugs ? 😎 That's a rectification for writing an own framework and leave the tedium of an "engine" ... Ok, that wasn't 100% serious. But hey, if it is a simple thing, why not write an own "framework" ?
  25. I disagree with this. 😛 A game engine is in my point of view a separate piece of software / API that provides all the necessary submodules that are necessary to run an arbitrary game. This includes rendering, networking, input, memory management, CPU load management, asset management, etc. Assets and your game logic are not part of the engine. That is what makes your game. Content creation tools and editors are written FOR an engine and are not strictly part of the engine. You don't need them to run the engine. I would call the thing you are talking about more like a game development kit, but that is just an opinion. However, I think you are right that people who write their games without an existing engine can't claim that they have written their own engine most of the times. The separation of engine specific tasks and game logic is often not given so that you can't use the "engine part" for other games. But again... opinion. 😛 If you don't use an engine, you will sooner or later have to write "engine specific" code. But I think it won't get too much in a 2d game. A lot of stuff like collision detection, physics and graphics are (extremely) simple in 2d. I never used SFML, I just read about it a long time ago, but I think that might be the thing that suits your needs most. If you use OpenGL, as some people suggested, you will have to do a lot of stuff that has nothing to do with your game ---> create and compile shader programs, load your images, cull objects before drawing them, etc. In a 2d game, this is not really complicated, but it takes time to do it right if you have never done it before. Greetings
  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!