Jump to content
  • Advertisement

Anand Baumunk

  • Content Count

  • Joined

  • Last visited

Community Reputation

699 Good

About Anand Baumunk

  • Rank

Personal Information

  • Interests

Recent Profile Visitors

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

  1. Anand Baumunk

    RTS Server architecture

    Hello there! I've been doing a lot of reading on the topic of multiplayer-servers, specifically on servers for RTS-like games.   The basic idea as far as I can tell is: - The server runs the game and does all processing - The clients send the userinput, e.g Player X wants to cast spell Y - The server validates that request, and then broadcasts to all clients "Player X is casting Spell Y" - The clients run a copy of the gamelogic, and then handle what happens (create a new Spell(), move it over time, deal damage when it hits) - The server has the authority over the clients, validating their state of the world from time to time and sending corrections     The problems that I can see with this are:   - UDP packets are not reliable, therefore each packet has to be send until an acknowledgement arrives. This means even when a packet gets through first try, it'll still be send a few times due to latency. Not exactly optimal, and after using wireshark on some popular RTS games, I figured that this is not what they are doing.   - Every player is always behind the "true state" of the world by his latency. The only way to work around this is by predicting what is going to happen. This is only viable in 1st or 3rd person games like an FPS or an RPG, and it is only done for the users input, not for the rest of the game. (When a client recives "player X starts moving to X,Y", it is supposed to handle that movement on its own. But since it got that command for example 100ms late, player X is always 100ms behind where he actually is at the moment ... But then again, if you resend the "correct" information, the player already has traveled 100ms further. So you again had to do predicting, which you want to avoid in an RTS scenario.) This is, however, acceptable for an RTS.   - But how would it be possible for the server to validate any current state of a client, since every client is behind the server by its latency anyway, and by the time the "to-validate" data arrives, its already old. Also, latencys change constantly.   - Also it feels like if a player has "lagspikes" (his latency going up and down again suddenly), there would be huge problems. Since you can't wait for packets, you might have to process them in the wrong order. With little delay not that big of a deal, but when a packet suddenly gets stuck and arrives 500ms late while the rest got through, everything would get messed up really fast. And to get everything back in order you'd, again, need some kind of validation.     I can't send a snapshot of everything on screen 64 times a second like FPS games can, since there is way to much going on.      I'm clueless what to do here, any piece of advice or thought is highly apprechiated. Thank you for your time and have a nice day! -gnomgrol    
  2. Thank you for all your answers. I had implemented what Khatharr suggested before I wrote my post, but that didn't result in what I need.   But what frob and servant suggest sounds fine to mine - I'll go with that.   Thank you all!
  3. Then the pathing-map get to big and pathing therefor takes to long.
  4. My units are smaller than the tiles I'm pathing on, so I can't really use the pathing approach. That's why I am looking for some kind of steering method.
  5. I am using A* on a classic grid, but taking all units into account would mean repathing all units when one unit moves. Units are usualy only immobile for a very brief time, so thats not happening.   When using classic steering, a unit will get stuck between two stationary units which are sitting next to each other. Imagine two circles touching each other - the 3rd unit will get stuck right between the two, because the repulsing forces cancel each other out. Can post a picture when I'm home.
  6. Hello there!   While trying to finish movement for my game, I got stuck with the steering. I have done a lot of reading on popular steering algorithms, but I could not find one that results in the behaviour I'm looking for.   Take a look at my scribble:     Red box is a wall, Green dots are my units, Orange line is the path for the new unit (from A*) and pink dots the way I need the new unit to go. The unit in the middle on the path is the one to be steered. (It is fine to first walk to the wall and then switch the direction).   The units which are currently not moving (in this example all besides the one to steer) can not be moved at all. Also, the speed of the steering unit has to stay constant. Movement should not look extremly jittery while steering if at all possible.   The most promising things I found were boids and flowfield pathingfinding. Flowfield pathfind looks great in the examples, but is a pretty big overkill. A* is fine for the pathing itself. Boids can't really be applied, since not all units are moving all the time. One can always suddenly stop and become unmoveable. Speed does not stay constant with boids and my units are not supposed to group. I tried to only implement the parts of boids that seperates units, but unit speed still decreases.   There are also very advanced things like ClearPath, but those look like a big overkill. They usually are used to prevent moving-moving collisions in advance, which is not needed.   I don't really know where to go from here. A good example for what I am looking for is the behaviour of minions in popular moba games - look at Dota2, LoL or Heros of the storm.   If you could point me towards some kind of algorithm or tell me how the big titles (most likely) did it, that would be insanly helpful! As always, any kind of help is appreciated!   Have a nice day and thank you for your time! -gnomgrol
  7. Anand Baumunk

    How to create a team around an existing project?

    I agree with most of the points you are making.  I think first thing I'll do is getting everything playable, with decent looking placeholders. Then set up a website with a short, illustrated and catching description of what makes the game unquie, fun and challenging, together with some short video displaying the gameplay. When that is up and statisfying me, I'll start to approach artists. I'll look for people who are into competetive gaming and therefore can relate to the project. I'll make it clear that profit and ownership will be shared across the team, and that they can have a huge impact on the final product.   Thank you for sharing your oppinion on the matter!
  8. Anand Baumunk

    How to create a team around an existing project?

    Thank you for your answers!   The intent of the project is indeed to go commercial when released. Not selling copies, but a free2play model with a fair and by the industry established system for monetarisation. The more people keep playing the game, the more money it will make. So it actually needs to be a good game.   I understand that money is the biggest factor here, but that is sort of a problem. Since I have skipped grades in school, I am currently in my 6th semester in university at the age of 19. My parents don't have any money to support me, so I have to work while going to college. Money is always short, and I am still far away from finishing my degree. That said, my goal was to be able to push the project to release (or atleast open beta) at the same time I finish my degree - turns out I am better at getting stuff working than at learning stuff I only need to remember for an exam.   In case your advice is to first finish my studies, save some money, and then resume the project: I figured that the time I spend as a student is the only time where I have sufficient amounts of free time to be able to get stuff done. I have worked both in office and as a freelancer from home over the last 2 years, and I think that my guess was right.     So what this comes down to is if I am able to convince people to work for free.   I can offer a wide variety of stuff to choose from, since nothing is done yet. Characters, envoirement, VFX, interface - you name it. With some basic stuff in mind, like the general layout for a level, its theme and colorscheme, people can go and create whatever they feel like. I also created a level-editor for every artist to use, to design the world but also to just to load his models into the game to check how they look. Loading in characters, letting them fight, cast spells and stuff is also possible. I set up a scripting engine, so even a very inexperienced programmer can make their own spells and heros. This has been tested with some inexperienced programmers :)   Also note that the visual style of the game does not require "high-quality" assets like a first-person game. Everything is supposed to be low-poly and texture-driven. The camera is fairly far away from the game at any time, and the visuals aren't what the game is about anyway. The only requirement I have when judging someones work is that it looks slightly better than stuff I create. And I am really bad at modeling/animating/textureing.   Have a look at this old screenshot from League of Legends, the current #1 game in the gerne. They had a big graphical update some weeks ago, but for the longest time this is how their game looked, and it rose to be the biggest game in the world. Therefore "what I need" is, I think, not unrealistic to get.   I can do modeling, rigging, animations etc. myself, but when I start to also create all the assets myself I am not going to get anywhere. They also look shitty. I don't need professionals and I am more than okey with people learning and improving while working on my project.   I think I can make up a nice presentation. But where do I post it? Who should I show it to? Should I create a website with all the details regarding gameplay, some screenshots? How important are videos? Do I have to be afraid of people stealing my gameplay ideas and releasing before I do? Because I kind of am.     Anyway, thanks for your support!
  9. Hello there!   I have been working on an ambitious project for the last 4+ years. Wanting to make both my own rendering-engine and competetive-online-multiplayer-game that could compete with the current top-titles, I started when I was in highschool. Having put in most of the freetime I had over the last years, I have come a long way. Rendering, networking, gamlogic - everything is developed far enough and to a satisfying quality to make a release at the end of this year seem realistic. That is, programmingwise.   Eventually, I had to wake up and realize that nothing is going to happen unless I get some people to join me. Mostly 3D-Artists. Needless to say I can't pay them, so I need volunteers. As far as I can tell, most indieprojects are started by a team, not the other way around.   I am pretty clueless on how to approach this. While I am convinced that my project is intreaging enough to make people wanna join, I can't really figure out who I can approach and how. Presenting my project on a website would be a good first step - but since I don't have any artwork, I don't know what I could show. I have imported models from current titles of the same gametype, to atleast be able to show some nice screenshots. But I can't really make those public since that most likely would violate some laws regarding ownership etc.     Therefore I ask you: How would you approach my situation? Where could I find interested people, what should I tell and show them? What should I be able to provide immediately? Some things I have to keep in mind?     Thank you for your time and have a nice day!
  10. Anand Baumunk

    Setting texture (sample?) quality

    Thanks, that is exactly what I needed!
  11. Well met!   When I load a texture from a file (using D3DX11CreateShaderResourceViewFromFileA) and display the result on a screen-sized rectangle, the final image does have a lower visual quality than the original image (rendertarget and texture same resolution ofc). For textures on model etc. that might not be visible, but it certainly is for interface-elements.   Therefore my question is:  How do I control texture-quality in dx11? Using load-info, the samplerstate, or something else? Does the fileFormat make any difference?   Thank you for your time!
  12. Well met!   I am struggeling with improving the quality of my shadows (for a directional lightsource). What I am doing:  - Create a lightViewMatrix. For the lookAt, I pick the point on the terrain that intersects with the cameras viewDirection. For the look from, I go farPlane/2 units in negative lightDirection. - Create an orthogonal lightProjectionMatrix. Near and farplane are obvious, and for the size I try to kinda guess a number from the camPosition.y, so that everything on screen is covert. (Obviously, this only works if camera doesn't rotate on any axis)   - Render all objects in my scene with this viewProjectionMatrix to a texture, using a pixelshader that outputs 1.0f if the depth is > 0.0f (otherwise 0.0f). - Blurr the resulting texture - Project the texture back onto the terrain, subtracting the value from the light-intensity (in the terrains pixel-shader) Result Result without blurr   The camera position and angle roughly reflect what I have in mind for the finished game. LightDirection: float3(0.2f, -1.0f, 0.2f) (high res, zoom in for details)     While it does not look all that bad, there are some obvious problems: - Even with a big shadowMap (2000x2000 in the screenshots), the shadows have very little detail. This is the case because of large parts of the shadowmap beeing "off-screen". - I can not do object-to-object projection, because if I have to have 1.0f/0.0f values to get a useable blurred image. I tried to work around this by using the .r channel of the texture for depth and the .g for blurr-factor. However, I ran into the problem of not beeing able to use the blurr-factor on parts that are not inside the original shadow, resulting in cut-off blurrs on the edges.      So, I went and tried to find something that could improve my shadowquality. I found Cascaded shadowmapping, but that seems overkill for this kind of camera angle. Also mentioned was perspective shadowmapping, but I could not figure out how to implement that, also it is supposed to produce a lot of artifacts (?). The best thing I found was Unit Cube Clipping, but I do not have the slightest clue on how to implement that either.     Which method do you suggest? A few lines or a link on how to implement it would be greatly apprechiated. I would like to be able to blurr the shadows and also do obj-to-obj projection (without drawing geometry a 3rd time).   Beeing able to tightly fit the shadow-map into the visible part of the terrain would be the most important step I guess.     As always, thanks for your time and help!      
  13. Well met!   I am wondering what kind of solution is preferable when it comes to text-rendering (for a dx11 engine).   As far as I can see, there are 3 solutions: - Merging dx11 and dx10 to use directWrite, maybe using this lib http://fw1.codeplex.com/ (someone from this forum made it, I think) - Using the DXUT - Writing my own Text-engine, for example http://www.rastertek.com/dx11tut12.html (Yayyy, it's back up!)   Currently, I have implemented the rastertek version, and it is working well. However, I do not know how to: - Generate the files (texture and mapping-file) that are needed for a font. - Give international support, for example the german ä or the full chinese language. While the special chars of european languages could be included, I don't know how I can support a full language of this sort.   To avoid these problems, I could use one of the two other methods of rendering fonts. Therefore I ask you: What is the current way-to-go for AAA titles, and which method can be expected to cause the least problems as time progresses (updating to dx12, for example). What are the ups and downs of the 3 methods I mentioned, and are there better ones?   Thank you for your time!
  14. Hey there,   I am currently trying to implement fog of war. Of corse, I want to have unit line-of-sights represented in it.   My first approach was the following:   - For each unit, collect all pathing-tiles that are in its vision-radius. - Cast a ray from the unit to each tile, checking if it is visible. If it is, set a bool-member to true. - At the start of each frame, set the bool-member back to false for all tiles on the map.   While this is working fine, it gets way to slow very fast, excpecially if units have a large vision-radius.   I guess that for the game-logic part, it would be fine to just test from every unit to each (not yet revealed) unit of the enemy team.   But if I did that, how would I get the information I need for the rendering part? I can't think of any way that would allow me to render FoW properly without knowing which pathing-tiles are visible.     Thanks, as always, for your answers!
  15. Anand Baumunk

    GPU skinned object picking

    Quick post to finish the whole thing:    It works fairly fine as follows: float BoneAnimatedObject::tryPick(D3DXVECTOR3 pickOrigin, D3DXVECTOR3 pickRay){   D3DXMATRIX inverseWorldMatrix; D3DXMatrixInverse(&inverseWorldMatrix, NULL, &worldM); D3DXVec3TransformCoord(&pickOrigin, &pickOrigin, &inverseWorldMatrix); D3DXVec3TransformNormal(&pickRay, &pickRay, &inverseWorldMatrix); D3DXVec3Normalize(&pickRay, &pickRay);     for(int i = 0; i < currentFrameSkeleton.numJoints; i++){ if(currentFrameSkeleton.joints[i].parentID > -1){ float dist = lineSphereIntersect3D(posFromWorldMatrix(currentFrameSkeleton.joints[i].combinedMatrix), currentFrameSkeleton.joints[i].length, pickOrigin, pickRay); if(dist > 0.0f){ return dist; } } } return -1.0f; } To make it better: - move spheres to the half-way-point between bone and parent - include leaf nodes     Hope this helps someone out one day! -Cheers-
  • 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!