Jump to content
  • Advertisement
  • Features

    1. Last week
    2. Cool. Thank you for your input. Overall, this has been a very helpful thread for me. I think I am on my way to that blazing fast particle system I wanted.
    3. Ah yep, sorry you are right, I didn't read thoroughly enough.
    4. Oh no, I'm definitely not doing that. Shader compilation happens once at init time. I did not include that part for brevity's sake.
    5. Thank you for the brilliant suggestion. Will do exactly that. Thanks for pointing out that I have no idea what I'm doing. I guess this is why I'm here, so I can learn from you and one day, maybe, have an idea of what I'm doing. I think you misread weirdcat, I think he was implying that how you do it will depend on what exactly you want to achieve, 'gave no idea' rather than 'have no idea'! I don't think you are that far from something decent.. it is more a case of jigging things around to make it more efficient for the hardware, reducing the amount of unnecessary expensive calls and repeat work. To go further on my suggestion about separating your once off work from your per frame work, you could have something like this: void Game_Start() // one off stuff on game creation, create shaders, textures maybe, vertex buffers etc? void Game_End() // free resources etc used by the whole game void Level_Start() // one off stuff dependent on a game level .. might have some resources void Level_End() // free level resources void Frame_Update() // stuff you want to do on your frame, updating if necessary and drawing using the resources you have already created That kind of scheme is fine to get started, be aware thought that on some platforms you can 'lose the device' for the 3D and sometimes more (say if the user starts playing another game in between, or alt tab etc, this may be the case on android from memory), in which case you need to recreate your GPU resources, in which case it makes sense to reuse the same bit of code you would use on game / level start for resource creation. It can often be a good idea to use pools as wierdcat suggested, allocate more than you need at the start, then use whatever you need on each frame (this is true for main memory as well as GPU resources). The other things is that you appear to be recreating and compiling the shader on every frame, which will probably kill performance. Again move this to one off code and reuse the shader. After all this is done you can reassess whether there are any bottlenecks.
    6. Note that UPnP isn't super wide-spread, and many places don't like turning it on for security reasons. (Some routers also come with it off by default.) True NAT punch-through using an external introducer is more compatible overall. That being said, you HAVE to run a public service on a public IP for that to work. There are some STUN and TURN protocol servers that you may be able to use -- google for those protocols -- but I don't know off-hand of any reliable, publcly open one you can use for your own protocol. If you're trying to avoid cost, you could perhaps set up a simple server on Amazon Web Services using their "free" tier. That lets you use a binary/process of your own (it's a virtual private server running linux,) and lets you run a small server free for a year. I imagine Azure and Google Cloud might have similar trial options. Then you need a domain name to point at this server, so the clients can realiably find it.
    7. fleabay

      Vehicles in FPS games

      You talk as if you're pro but I've never heard a pro talk like that. You're a walking talking contradiction.
    8. Well, ideally I want a multi-purpose blazing-fast particle system. But you're absolutely right! I should try to pass only as much data as is absolutely required for the task.
    9. What are those sprites actualy defined by? Do they rotate in world space, scale, and translate? In that case you still need only 3x4 matrix not a 4x4 matrix, which saves you entire 4f vector in uniform, general most lowend limit for uniform array is 256 times 4f vectors. In case your sprites do not rotate (what they should not, so not call it sprites if they do but general quads) you can use a single 4f vector for position and fourth number as the scale factor around all 3 axises.
    10. Valakor

      Compute shader return values

      HLSL is a pretty small subset of C, so I'm unsure if it supports aggregate initialization like that. You probably just need to fill in each element like: corners[0] = x0; corners[1] = y0; corners[2] = z0; corners[3] = x0; corners[4] = y1; corners[5] = z0; ... MSDN's pages about HLSL syntax and features might tell you what type of array initialization syntaxes are supported. As for the last error, you don't specify parameters as 'out' at the callsite like you do in C#, calling the function should just look like: int corners[8 * 3]; CornerPoints(x, y, z, corners);
    11. @SyncViews, just an idea. What if I send mvMatrix as a uniform array, and even though I can only send 32 or 64 matrices at once, I can then break it up into, let's say, 4 draw calls, to do 128 or 256 sprites? Maybe worth a try.
    12. It's C++ that runs on every frame. Will clarify these things in the future. Yes, in this case the goal is to change vertex data on every frame. Will definitely try using one VBO without recreating it, set it as dynamic, then do updates to it. Thank you. Thank you for the brilliant suggestion. Will do exactly that. Thanks for pointing out that I have no idea what I'm doing. I guess this is why I'm here, so I can learn from you and one day, maybe, have an idea of what I'm doing.
    13. No. I will. Thank you. Yes, since I was looking for a way to draw all sprites with one call, I decided to make mvMatrix an attribute. Should I try sending it as an array of uniforms? Maybe I can send an index of the sprite as an attribute and then get mvMatrix out of a uniform array based on that? Then, I think I will be constrained by maximum size of a uniform array. These guys here talk about values around 512 maximum floats (32 matrices max). Granted, this is a conversation from 2008 so the limits must have risen since then. I'm looking to draw around 256-1024 sprites (32x32 grid would be nice), and it should be as butter-smooth as OpenGL 1.1 was. It would suffice if I could have 256 matrices in a uniform array if that speeds things up. Can I? Thing is, even though right now it's a just a grid, the sprites are supposed to be stretchable/bendable, like trey were in my old fixed pipeline code, so yes, each corner of each poly does have to have a completely unique position on every frame. What I'm building is an editor for a flexible mesh of voxels, where you can stretch each corner and morph it into interesting architecture or landscapes. This worked perfectly in my old engine but it was Java and fixed-function. Got it. Will try re-use the same VBO and will try DYNAMIC and STREAM. Other people have mentioned this as well below. Thank you. It makes sure the texture is in the texture atlas. It's rebuilt as-needed (only when a brand new texture is added). You're right, I probably should get rid of string map lookup here. But in this particular case there is only one texture so array size is 1, so it's not the bottleneck. setVertexAttrib just calls all the gl functions needed to set up an attribute. Good point, though. I should try to do this once if I can. This is not the only program/renderer that runs in the engine though, so I assumed I have to re-set-up all the attributes on every frame for every program. Is that not the case? I'm not super worried about the gaps between the sprites. This is only for an editor, not for rendering in the game. As long as it's smooth and I can quickly build vast landscapes and cities out of voxels, that's all I care about. Thank you, will try to see if I can only calculate these once. It's texture span. It's basically how many voxels a texture spans before it repeats. I still have it in the shader for some legacy reason I think. I can't remember what I was going to do with this value, but I think it was important for something once before.
    14. I'm making multi unit (player has multiple units / characters) 2d zelda like rpg and have a few design questions. There will be wands, potions, melee weapons, bowed weapons, armor , horses, rings, rivers, boats, crafting, food, eating ,drinking, buying, selling, seasons, temperature, traps, magic, plants, fruit, ents, the works. The Days will change to night, the temperature will rise and fall, the leaves will drop, the snow will come. And Soon, a race of allelopathic ents will soon destroy all other plant on earth as we know it. Should player be able to control all units in his team or just the team leader? if the latter should some units he recrutes in the game have better AI than others? Should each non magic unit be a jack of all trades but master of few (Can shoot a bow, can swing a sword, can thrust a spear, can dig a ditch, can chop a tree ECT.)? I'm leaning towards this option. OR Should Each unit only be able to do one thing? like Yeoman shoot bows and that's all or Swordsmen use swords and that's it? But their like really good at it?
    15. Agreed. I made a mistake in terminology in my previous post, so I'll retract the second part of it. I'd still be interested in knowing more about the OP's goals though (target platforms, types of projects, etc.), since that could have a bearing on what languages and/or idioms might be worth pursuing.
    16. _WeirdCat_

      3d picking inaccuracy.

      No wonder why intel gets garbage if you enable nv specific extensions and use them - wanted to post that a week ago
    17. rocketjuicegames

      Neon Tail

      Demo Download Our Website Patreon Discord Pitch Neon Tail is an open world roller skating game where you follow a young girl’s adventures and save the streets of Bluepulse City from dimensional disaster. She will meet many colorful characters and explore many fantastic locations of the city, from its various districts (shopping, business, residential etc) to its subways and sewers, to the unknown planes of existence. The game is inspired by the urban dynamism of Jet Set Radio, the character development, narration, and emotional connections from Life is Strange, and the open world freedom from new gen Batmans. Features Plot missions Side Missions Unique roller skating controls Fantastic sci fi city to explore Free roaming activities Explosive soundtracks Memorable characters, playable and NPCs Interesting Collectibles
    18. rocketjuicegames

      Neon Tail - Devlog 34

      Video For this week's #screenshotsaturday , steady progress on free roaming activity. - The job system is done, a first type of job, package delivery, is coded and is ready for level design phase - Created a Notification system. You can receive any kind of message, jobs included. You open the message by pressing down on the dpad, and for jobs you can accept and activate the job by pressing down again. - A small Monument that displays the names of our backers/supporters. (bigger and crazier monuments to come) - Added breakable walls in the city. - Added a night version of the Shopping District. - Fixed a big FPS drop for night version of shopping district. (too many small lights) Next week we might open access to a new residential area, stay tuned! See you next week!
    19. Hi,im interested to take part as a programmer,and maybe as a animator.
    20. Hello Magi98, I am interested in your project and would like to support as a programmer. I have some experience with small hobby projects in Unity and can imagine working on the project. I want to gain experience first and have no financial interests.greetingscato
    21. I could be wrong about this, but I've always been under the impression that the motivators behind ECSs are mostly architectural and not as much related to performance. Obviously an ECS implementation can be performant, but such a system could certainly be implemented in a non-performant way as well. So if your primary motivation for using an ESC is performance and not, say, convenience or architecture, it seems like that might be worth taking another look at. ECS should in theory help scale to very large object numbers by having a better memory layout and possibly being more amenable to SIMD etc., which could help with say your collision detection, depending on tour current implementation. Compared to having an "Entity" base class with say "virtual update()", "virtual canCollideWith(other)", etc. where the argument is that calling a virtual method on a "soup" of different things hurts CPU prediction (different actual implementations) and memory caching (jumping around in memory between objects). But it is by no means the only way. e.g. Factorio, where I believe the devs have openly said they see no advantage to ECS, and I believe do even have an OOP "Entity" structure (the Prototype / data gives an idea) but optimised the important cases (e.g. items on belts, pipes, inserters, etc.). A common example in various games that may be specifically optimised would be projectiles, particles, and "static" things like trees, rocks, etc.
    22. Hi,im looking for an artist who can me help with a proyect,it will be a adventure plataform,maybe action,2D game in unity,i need help with the sprites for animation,environment,etc. My intention is practice with this,and grow,if you are interested,please send me a message,thanks!
    23. Very informative article! Very interesting! Thanks! Nice read!
    24. I didn't found a "Edit" button so I'm creating a new reply. I changed my Skeleton and SkeletonJoint class so that Skeleton has only a list of Joints and each SkeletonJoint has a pointer to it's parent, but no children. xmath::Matrix CSkeletonJoint::GetLocalMatrix() { xmath::Matrix localTM = m_transformMatrix; localTM *= xmath::Matrix::CreateScale(m_scale); localTM *= xmath::Matrix::CreateFromQuaternion(m_rotation); localTM *= xmath::Matrix::CreateTranslation(m_translation); return localTM; } xmath::Matrix CSkeletonJoint::GetWorldMatrix() { xmath::Matrix worldTM = this->GetLocalMatrix(); CSkeletonJoint* pParent = m_pParent; while (pParent != nullptr) { worldTM = pParent->GetLocalMatrix() * worldTM; pParent = pParent->GetParent(); } return worldTM; } I fill the JointMatrixArray in my Entity. for (int32_t i = 0; i != pSkeleton->GetJoints().size(); i++) { resource::CSkeletonJoint* pJoint = pSkeleton->GetJoints()[i]; xmath::Matrix jointMatrix = pSkeleton->GetInverseMatrices()[i] * pJoint->GetWorldMatrix(); jointMatrix *= m_pEntity->GetWorldTM().Invert(); m_jointMatrices[i] = jointMatrix; } I use Matrix::Transpose before I send it to the shader and I already tried to change the matrix multiplication order. If I rotate the first Joint(root) than the whole mesh rotates, but if I rotate the second Joint(child) it doesn't change at all. I already looked at the glTF2 reference implementation(WebGL) and other skeletal animation implementaions and I still can't find my multiplication error.
    25. Nice article! Very informative! Thanks!
    26. About the game: The project is a small trading/combat/exploration oriented game set in a medieval fantasy world developed in unity. The game will be hard and punishing and not meant to be finished on the first try. It involves several different play styles with concepts seen in both old school games and newer ones. It's nothing like what is currently on the market and therefor kind of hard to pin down into a specific genre. Our team: The project is in it's very early stage and we are currently building the team. We have three people so far which are split among programming, writing and development. We will be adding more team members as the project moves forward. Our current goal is to build a small prototype to be able to present for further development. What we need: We are currently seeking a 2D artist for various needs ranging from character to world concept and designs. If you are interested or have any more questions, contact me on discord at Veizyr#1797 for more details. We'd love to see your portfolio.
    27. jb-dev

      Vaporwave Roguelite

    28. I think there's an important distinction between essential game design and artistic challenges, like "fun" combat in plausible and good looking environments, and self-inflicted hurdles, like VR instead of a 2.5D sprite engine and multiple varied playing characters before one good player character.
    29. Hey, nice to see you again, and welcome the newest entry in your favourite weekly update blog! Last week had quite the development, not gonna lie. There was a lot of brainstorming, modelling and coding. Needless to say that I got a lot of things to say, so let's get right to it! LOD (DONE!) First, I'm happy to say that all of my models have their LOD done! It's was quite the task, but I think it was really needed! From that point on I got to remember to do these LOD on each model I'm creating. That way I don't need to stop everything redoes the modelling afterwards. GPU Instancing Another great improvement I made was with GPU Instancing. (If you don't know what this is, take a look over there!) Previously, some of my game objects got their mesh changed to fit certain situations. This was convenient and was overall really easy to do... There were even some meshes that were procedurally generated altogether. What I've missed, however, is that even if most meshes were the same, Unity was still considering them as different meshes altogether. With that, I was missing out on dynamic batching and GPU instancing. While my shaders were properly configured the other prerequisite for GPU instancing was that each model is the same. Because of this, I've decided to revise my model-changing workflow. The gist was that I could generate and modify these meshes only once and simply reference those to all game objects. With this, I was able to greatly reduce my lag by batching most of my meshes. Needless to say that this had quite the effect on my frames. Plus I was able to rectify some of these procedurally generated meshes that quite honestly didn't feel quite right... Doors So, to rectify my really basic procedurally generated door meshes, I've decided to model out a more Vaporwave-ish door. Here are the results: While these surely had more poly in them they also got LOD from the get-go. I've got to say I like this design a lot. It really feels Vaporwave and looks a lot more detailed than previously. Alt Routes and Alt Doors While working on doors I've also decided to rectify alt routes. For those who didn't know, alt routes are alternative routes that the player can take. Depending on the player's luck they could spawn or not... To get in, they need to pay with crystals. To put it simply, the player will be twice as lucky while travelling on the alt route. Every loot will actually get a second luck roll if their first one failed. One of the drawbacks of it is that there aren't any special rooms at all. It's really just a way to get objectively better loot to have better odds later on. But anyways, to get in the player need to locate specially marked doors. Here's the design: You can easily know this door is special with that nice linen barrier. I honestly also think that there should be a bouncer here too, just to cram in the idea that this is for VIPs only. I'm also not sure if I should change the door's colour to make it even more obvious... Breakin' the Law Next up, I want to talk about the mall for a bit. Basically, with all that LOD refactoring I've decided to split up my mall geometries and put them in different layers. This way I can easily control which light interacts with which geometries. At the same time, I decided to add a functionality that I had in mind for quite a while: breaking the mall's windows. The idea is that there would be items behind those windows. Normally they won't be buyable, but if the player breaks the window then they would get it. AND for free. But, that's considered robbery so there will be consequences. When those windows get busted, an alarm will go off. The light will also turn red-ish (or the colour of the sun to be more precise). Now I'm not quite sure what else to put, but it's either that some cops will be placed at random on a level or that all malls will be closed from that point on, but I'm not sure. I know Spelunky goes with the "vengeful owner" path, but I don't really know. I guess I need more brainstorming. I'm also not sure what kind of items would be displayed. I had the idea that the more unlucky you are the rarer the items would be or something like that. That's another point worth brainstorming about. Boost Packs Finally, let's talk about boost packs. To put it simply, boost pack are one-time use items that give you some kind of advantage at the beginning of a run. For example, there might be a booster pack that gives you an Attack bonus or even one that can give you a piece of equipment. To buy these, the player must find a Super Shoppe. It's a kind of special rooms where the player can buy persistent items with their crystals. (think of it as an in-game shop of some sort). That room isn't modelled-out yet, so there's no way to access them yet. When the player buys a boost pack, it gets added to their collection and each savefile got their own collection. When the player is about to start a run a boost pack can be selected in its collection. Once the run starts the boost pack gets used and is removed from the collection. I've also started to add these late in the week, so there's only one kind of boost pack as of yet. There's also no ways to apply these right now too (Missing GUI). Anyways, most of these would take the shape of some kind of billboarding sticker-ish thing. Take a look at these nice placeholders : These are actually just stats-boosting boost packs. The smaller ones cost about 10 crystals and come in different sizes. And, you guessed it, the size affects the cost and their bonuses. I'm still working on them but the actual code is actually all written. I still need that GUI and that special room though... Minor Updates Rectified the art style to be more "Low-poly-ish" Added those nice hard-edges and whatnot Modified most of my weapons materials to be emissive Because, you know, UX and all Refactored most of my UI to remove those hungry layout and canvas components. Added a permanent money counter at the bottom of the screen. Added a AESTHETIC texture to my gun's grip Optimized the light system of most of my special rooms. Changed most item LODs renderers to be on a better layer (Based on where they are spawned) Refactored my rooms classes to remove duplicated code Fixed bugs with alt rooms not being properly closed Changed the catenary curve mesh generator to add highlights Next Week Not gonna lie, I doubt that I would be able to make a demo by the end of the month, but I'm still prioritizing the most crucial functionalities as much as I can. Next week I will continue with the Boost Pack. I will also probably continue with optimizations and profiling altogether. Otherwise, I need to take a moment to brainstorm. We're at that crucial point where I need to focus on how can I ramp-up my gameplay. I also want to make much of my current actions as juicy as possible, just to get the game in a presentable state. Afterwards, it's your usual suspects (God bless these may they never change😌).,, There are also lights and also going through my meshes again and push for that low-poly redesign. Needless to say, a lot of work is ahead of me...
    30. _Silence_

      Questions about career

      Yup. Everything depends on where you live and where you work. Ie, in France, normal game companies do not pay their employees. If you make 25K€ per year (gross salary, so you earn less once you paid your salary taxes), you can feel happy. And this will be in Paris, the most expensive city in France. If you are very lucky, it will be in Lyon. Some companies will tend to settle in less expensive areas (ie Spain). Other main places in UE will be in London, and there you can expect 30-35K£ a year. But again this is not that much. With such salaries, you can expect to live (have a very little bedroom and eat pastas everyday). If you move out from the game industry (ie you go to global industry) then salary will be slightly higher. Expect 30K in France (even out from Paris). In UK, this will generally be outside of London (even for Imagination Tech), and salaries will be almost the same. In Canada, you can expect a bit more, but again, will depend on your location (ie Vancouver will be more expensive than Montreal for exemple). What you also need to know is that companies tend to flatten their salaries, worlwide speaking. So except if you are a top known programmer, with excellent skills, whether you will apply here or there, at the end, you'll mostly have the same thing. What will make differences is where you will apply. Ie, in USA, you'll be able to raise your salaries quickly if people are happy from your work. In France, not or very few. Also note that these appealing salaries are made to appeal young, single and devoted people. If you have a family, if you expect to have a life appart from your job, then your chances to be hired will be lowered. I'm talking from my experience, from the believes I made, so I might be wrong here.
    31. 8Observer8

      Can only create games with game engines.

      A few years ago I created this 3D game without engines: https://www.gamedev.net/projects/1049-bitballoon3d/ I used pure WebGL and TypeScript for this game. The author of TypeScript is Anders Hejlsberg. He is also the author of C#. I see that you study C#. You wrote about it above and you tagged your theme with C#. TypeScript and C# are very similar languages. I like study these languages together. I can use OpenGL/OpenTK for C# and WebGL for TypeScript. This way saves my time because OpenGL and WebGL are similar. I like to study similar things. TypeScript and WebGL allow us to run applications in one click in different platforms. For example, you work on Windows and you make a demo. You want to show your demo to your friend but he uses Mac. You can spend a lot of time to build your demo to Mac and Linux from Windows. If you made your simple game using WebGL you can give a link to your friends and they can run it even on mobile devices. One click only. Your can share your code with friend and make your games in Sandbox. I made this Snake 2.5 game using TypeScript and WebGL. You can fork it (just press Fork button in Plunker), change and send me a link on your version with your changes. This way helps to study coding.
    32. Could you edit your post and put the code in code tags? That will make it easier to read. (Obviously there's not much code there and I'm sure someone could diagnose the problem as it is currently, but it would be easier with proper formatting.)
    33. Regarding this part: Another possible reason besides performance would be portability. For example, C++ might be a reasonable choice for a common code base shared between e.g. iOS and Android versions of a game or framework. Further, it seems like whether performance would be a concern at all would depend on e.g. what platforms you're targeting and what types of projects you're working on. Depending on the answers to those questions, other languages might be perfectly suitable. I could be wrong about this, but I've always been under the impression that the motivators behind ECSs are mostly architectural and not as much related to performance. Obviously an ECS implementation can be performant, but such a system could certainly be implemented in a non-performant way as well. So if your primary motivation for using an ESC is performance and not, say, convenience or architecture, it seems like that might be worth taking another look at.
    34. RoKabium Games


      Keeping up with the twitter hashtag of screen shots on Saturday!
    35. You are right. Runtime composition shouldn't be the default solution. Using your language features for compile time composition is good enough most of the time, especially for smaller projects. ECS is not the magical silver bullet people claim it to be, nor is it the only solution out there.
    36. Ah the Assembly part was quite demanding and made simple demos( drawing a line, in realtime, was a challenge ) for the Spectrum. To be honest, I managed basic stuff but it proved invaluable to understanding the Mastersystem and Megadrive. It also helps clear up myths from their eras such as "the Snes was more powerful than the MD, and so on for the Spectrum and C64", as in neither case was that correct. For every advantage one had, it was trumped in another. My time with C++ and DirectX was..."messy". I was learning in 2000 and my knowledge was like Frankenstein's monster - different books and winging it on hope-and-a-prayer. In that hindsight I do recommend, once or twice a week, to spend a 30 minute focused session reviewing your code and slim'n'tidy it, ready for your longer, more serious sessions. This is what really shapes you into a disciplined programmer and to also nuture your own style. Basically, get into a routine.... I think you're on the right track, though!
    37. MasterReDWinD

      Compute shader return values

      Many thanks for your reply Valakor. I've had a go at getting this working. This is what I have so far: void CornerPoints(float x, float y, float z, out int corners[8*3]) { ... corners = { // Front x0, y0, z0, // front bottom left x0, y1, z0, // front top left x1, y1, z0, // front top right x1, y0, z0, // front bottom right // Rear x0, y0, z1, // rear bottom left x0, y1, z1, // rear top left x1, y1, z1, // rear top right x1, y0, z1 // rear bottom right }; In the calling function I have: int corners[8 * 3]; CornerPoints(x, y, z, out corners); Unfortunately I'm getting a couple of errors: Shader error in 'VoxelShaderTest.compute': syntax error: unexpected token '{' at kernel CalculateMaterials at VoxelShaderTest.compute(124) (on d3d11) Shader error in 'VoxelShaderTest.compute': 'CornerPoints': no matching 0 parameter function at kernel CalculateMaterials at VoxelShaderTest.compute(144) (on d3d11) Shader error in 'VoxelShaderTest.compute': syntax error: unexpected token 'out' at kernel CalculateMaterials at VoxelShaderTest.compute(144) (on d3d11) Do you have any ideas on these? I think you're right on the array needing to be flattened.
    38. Magogan

      Questions about career

      Are those salaries real? Do people actually make $70,000 with under 3 years of experience as a game programmer? And where? If it's in San Francisco, $70k is not much. I heard for a family with 2 children, if you are earning less than $100k you can barely afford living in the Bay area for example.
    39. 8Observer8

      Can only create games with game engines.

      I like the Input system that described in this book: Learn Math for Game Developers
    40. mhykah

      DevBlog: Flying Fish #1

      Introduction The idea just came to me as I was day dreaming. A game where you play as a fish wanting to fly. It would be an endless runner where you hold down a key to dive, the deeper you dive the higher you jump through the sky. Avoid obstacles, collect bonus points, etc. Referencing other games, the best way I can explain it is something similar to Halfbrick's Jetpack Joyride. As a relative beginner without great equipment I think that this is a project with reasonable scope and is something I feel is achievable. Obstacles I foresee are (1) creating and tweaking acceleration to feel good and intuitive, and (2) level design/procedural generation. Addressing these: (1) I'd like to study Jetpack Joyride's movement as I remember it feeling just right, and see how this can apply to my game (2) I think that full level design is unfeasible and limiting. I plan to create 'modules' of obstacles and awards which can randomly appear one after the other. The modules which appear can be decided based on the player's current score. Current Progress Time taken: 1.5 hours Movement done but no acceleration
    41. 8Observer8

      Best software for a simple game

      I recommend you to study these video lectures: Math for Game Developers
    42. suliman

      Vehicles in FPS games

      Shade please cut it out. Im not trying to destroy someones life. Im simply pointing out that when you set out in this business, many people bite off more than they can chew (having overly ambitous projects when not realizing how much work is required), which leads to lots of disappointment and people giving up. I was certainly like that when I started making games in 2001. On topic: I would still recommend the OP to flesh out the core shooting first, as well as other critic components, such as networking if the game is multiplayer.
    43. Recently,I am studying bullet3 and DirectX 11.And I got some wired results like the attachments shows.It should be a sphere not a flat plane. I extended the btIDebugDraw to draw lines.The draw line api works correctly independently.And I traced the call stack and found there was some thing wrong with the bullet transform .I have no idea about how it acts like that. So I ask for help here.Any help or tips will be apreciated.
    44. It seems most of these game server browsers have died out since years. You can look there for more infos: https://en.wikipedia.org/wiki/Category:Game_server_browsers
    45. You recreate the array each frame, consider making a big array of sprites and not to use all of them, or if you have a constant num of sprites then you use glBufferSubData and you dont do glGenBuffers per frame too its only needed when you change the size of vertex buffer, anyway you gave no idea what ur doing
    46. I haven't fully read through your code or your github but: That code you posted for OpenGL ES2, is it meant to be pseudocode? There are no functions. It is not clear what you are doing as a once off process and what you are doing per frame. The general idea in graphics programming (and game programming in general) is usually to move as much code into a once off process (on starting game or level etc) and do as little as possible per frame. As such, to move a viewpoint, you typically don't change the vertex data, you might change, e.g. a matrix representing the view / camera transform and pass it as a uniform. This is very cheap to do for the GPU. If you do need to change dynamically vertex data each frame, you should explicitly tell the API that it is dynamic (rather than static unchanging) on creation. You have to be very careful using dynamic vertex buffers so as not to drastically affect performance by stalling the pipeline. In some cases this means creating e.g. 3 copies of a dynamic VB, and using them in turn on each frame. In some cases the API help do this for you, it is a good idea to try both and compare if you are not sure. You also absolutely do not want to be making any dynamic allocations / deallocations either on the GPU or CPU each frame.
    47. Zemlaynin

      DevBlog, No. 35

      Hello dears! This month we had the following tasks: 0. Decide whether we need to implement AO (ambient occlusion) or not. 1. Screw the optimization of the terrain, i.e. return it to the previous level. 2. Implement the creation of a settings file and its saving. 3. Loading textures depending on quality settings. 4. To implement the preloading of the objects. 5. Tie different mines, and implement a new type of buildings-career. 6. Do as I call them multiobjects. These are the objects on the map that will be drawn by several instancing objects. 7. Implement a window interface object that can be dragged and dropped. Including the second screen, respectively, to implement support for the second screen. 8. And finally to finish the creation of new cities with strata and the first economic ties. But after reading an interesting article https://gamedev.ru/industry/articles/Godot_making_game threw a number of tasks and the list turned out: 1. Screw the optimization of the terrain, i.e. return it to the previous level. 2. Implement the creation of a settings file and its saving. 3. Loading textures depending on quality settings. 4. Tie different mines, and implement a new type of buildings-career. 5. And finally to finish the creation of new cities with strata and the first economic ties. On the project as before continued to work at least 12 hours a day. But one day I forgot the flash drive at work with the project and did not do it at home... And after this, so to speak forced rest, the next day was productive. Decided to practice this approach to development. In the end the performance like, has increased, probably affected tiredness. As a result, I took a two-week break from development. Week vacation and a week was given to all the various accumulated personal and work events. After such rest the first week left on performance of the list of small tasks: - fixed a glitch with trees that appeared in the ice; - made snow Christmas trees; - corrected models of deciduous trees; - corrected generation of mountains, reduced height of peaks, reduced snow caps; - fixed a bug with square banks. - fixed new textures of mountains. - completed mapping of surfaces (swamps, ice) now they are clearly displayed according to the grid of 4x4 sub-tiles; - fixed pathfinding algorithm considering new mountains. The first of the main list were made mines and quarries: And we have one small miracle of the world: Next made loading textures depending on the selected quality, and had the same Tinker with this seemingly easy task. In General, I implemented 4 out of 5 main points. Again deprived gameplay. Today, with the engine stopped. It remains only to correct the generation of rivers. And all next month only gameplay on the agenda. Try Thank you for your attention!
    48. Zemlaynin

      The Great Tribes

      Game project, a global strategy simulator of civilization development - The Great Tribes
    49. It is perfectly normal to struggle on this because it's new to you. I really cannot get into massive amounts of detail without writing an entire guide, but you'll want to break everything down into smaller and manageable steps but with purpose. Regarding input binding this is a very useful feature to have! You'll want to think as logical as possible and what makes sense for your overall design. Just a small example for you. If I have a game that moves the player using WASD and I want to change W to T in order to move forward I can do something like this: (I'm using SFML as an example but you can use anything that gives you access to keycodes) For my playerObject I just have a very simple class: class playerObject { public: // X - Y Position int x = 0; int y = 0; // Initial Keys sf::Keyboard::Key moveForwardKey = sf::Keyboard::Key::W; sf::Keyboard::Key moveBackwardKey = sf::Keyboard::Key::S; sf::Keyboard::Key moveLeftKey = sf::Keyboard::Key::A; sf::Keyboard::Key moveRightKey = sf::Keyboard::Key::D; // Setup starting position void setup(int tX, int tY) { x = tX; y = tY; } // Move by passed amount ( Up, Down, Left, Right) void moveForward(int tAmount) { y -= tAmount; } void moveBackward(int tAmount) { y += tAmount; } void moveLeft(int tAmount) { x -= tAmount; } void moveRight(int tAmount) { x += tAmount; } // Bind New Keys void bindMoveForwardKey(sf::Keyboard::Key tKeyCode) { moveForwardKey = tKeyCode; } void bindMoveBackwardKey(sf::Keyboard::Key tKeyCode) { moveBackwardKey = tKeyCode; } void bindMoveLeftKey(sf::Keyboard::Key tKeyCode) { moveLeftKey = tKeyCode; } void bindMoveRightKey(sf::Keyboard::Key tKeyCode) { moveRightKey = tKeyCode; } }; In your logic step you'll have something like this: // Move Block if (sf::Keyboard::isKeyPressed(greenBoxPlayer->moveForwardKey)) { greenBoxPlayer->moveForward(5); } if (sf::Keyboard::isKeyPressed(greenBoxPlayer->moveBackwardKey)) { greenBoxPlayer->moveBackward(5); } if (sf::Keyboard::isKeyPressed(greenBoxPlayer->moveLeftKey)) { greenBoxPlayer->moveLeft(5); } if (sf::Keyboard::isKeyPressed(greenBoxPlayer->moveRightKey)) { greenBoxPlayer->moveRight(5); } Notice how we're not checking for W to move up? We're checking if the keycode assigned to moveForwardKey is pressed and doing the action required, it doesn't matter if that keycode returns as O or P, if it is pressed it will call our moveForward function. You'll have to program a class to handle input binding. I simply made a class that works on 3 steps. You press F1 then Step 1 starts which waits for your to hit the first key: myKeyBinder.setKeySelectionOne(tSelectedKey); , then toggles Step 2. Step 2 waits for you to select the new key: myKeyBinder.setKeySelectionTwo(tSelectedKey); then applies the change like this: myKeyBinder.changeKeyBind(*greenBoxPlayer); which looks for the first selection to see if it is a set key to begin with, then if it is found, it will just swap it with your second selection. I know this is a pretty rough example, you'll most likely want to make controller classes which work with your player objects, and so forth. (GIF) - Key Swapping in Action:
    50. I think you misunderstood my question. I'm well aware of hosting options. -- I'm specifically trying to AVOID hosting my own service. This is like a common game thing that every game does that eats up like almost no CPU or bandwidth, so I'd be quite surprised if there really aren't any matchmaking services out there... I know Steam has one in their API that they host for you, but I have no idea how to get into the steam platform -- especially with a hobby game that I don't plan to sell on Steam. XD I could imagine writing one that was an IRC channel... but that would be super sketchy and hacky... I guess I'll probably just throw up a quick ASP.NET SignalR repeater on the Azure free tier. 🙄
    51. Hosting for your own code, or a complete services ? The cost for a micro Linux node in AWS, Azure, etc. is pretty low, should be well below $10 a month, and if it's just for server lobby/listing will be a while before scale is an issue. AWS will give you an EC2 instance and some other things free for a year. There are many other similar providers. A shared webhosting server may also work, but be a bit more restrictive. For initial development testing, you might just run the server on your own home network, possibly even on your own PC, maybe in a VM. Use something like Duck DNS if you don't have a static IP. Not sure on any free services / libraries. Steam provides some stuff in Steamworks, but I guess that is not what you are looking for and no idea about the other platforms.
  • 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!