Jump to content
Site Stability Read more... ×
  • Advertisement
    1. Past hour
    2. Just a side note, you have possible memory leaks in your codes (both in Init and Update), for example if CreateBuffer or Map fails you return leaving the allocated memory (vertices, indices) unreleased.
    3. Hi Everyone, Hopefully all of this makes sense at the end, but if you need anymore clarification please let me know. Background: My MMORPG is a sword playstyle based game, where players need to complete a dungeon at the end of each floor to be able to progress to the next. (Players can go back to lower floors / Specific floors will have specific resources needed for crafting as to give players a reason to go back / Player skill progression will also require them to do specific quests/tasks on specific floors, again giving them reason to go back) Inspiration: Sword Art Online (Anime) - Aincrad game that the players were stuck in My map progression issue is this: I'm split between having all players locked to a specific floor until they/or the party they are in, completes the dungeon, then those players unlock the next floor OR if as soon as a party clears the floors dungeon and unlocks the next floor, that floor is unlocked for everyone on the server. I'm going to split these into options 1 (Individual Progression) and 2 (Server Progression). Option 1: Benefits: Allows the more dedicated/end-game player base to progress at a faster pace. Allows for end-game guilds to form and recruit from a more end-game player pool, I.e. Players from that specific floor Allows end-game players to sell their services to help newer players to progress through the lower floors Drawbacks: Possibility of new players being stuck in lower floors as there might not be good enough players left on those floors to help them make a party and progress through the dungeon ? Option 2: Benefits: Allows new players to skip floor progression to be with their friends that have progressed further in the game ? Drawbacks: Players will be on floors where they might not be able to survive or complete solo content because of their lack of skill, items, game knowledge Complains from new players saying the content is too difficult, as they are skipping floors New/lower player base will essentially just be waiting on the end-game players to finish the new floor unlocking it for the rest of the server, basically letting them sponge off of the top players progress After typing all of this out it's starting to become more clear cut as to which option I should take, but I'd like to check with the community here as I'm sure there are other benefits/drawbacks that I'm missing that might change my view of things.
    4. _WeirdCat_

      uint8 -> uint8_t alias?

      will typedef uint8_t uint8; do the trick?
    5. Today
    6. You might want to ask your players nicely for what version .Net Framework they are running. From a quick googling, I found some problems related to mis-matched .Net Framework runtime version.
    7. Servant of the Lord

      uint8 -> uint8_t alias?

      I see that uint32 is already an alias for uint. Is there a way I can create aliases for uint8, uint16, uint32, etc... for adding a _t to the end of their names? uint8_t, uint16_t, etc...? I ask because forgetting to remove the _t is probably my most frequent mistake when registering object properties.
    8. Servant of the Lord

      Enum size

      Hi! Just dropping by to say I ran up against the need for other-sized enums also. Since C++11 added enums with different underlying int types, I've been often using 4-byte, 2-byte, and occasionally 1-byte unsigned ints. Not a show-stopper for me, I can work around it easily enough, but I'm glad it's on your TODO! I didn't even think about enum size, until writing to an enum property overwrote the member variable next to it.
    9. Timeline Games

      Full Release Today!

      Hi everyone, Today marks the full release of Slime Wars, after 5 long years of development. It is avalible for Windows, Mac and Linux and is free ... so why not try it? Have a wonderful day, Buttercreeper6
    10. Timeline Games

      Slime Wars

      Slime Wars is a retro 2D platformer that is currently in development. You fight through 6 regions. Each region will have small changes on the enemies you fight, like higher damage or you can't see the enemy until you get within a reasonable distance. Each region a have 5 levels and 1 "Boss Level", which is a small level before a boss. The game will release on October 21,2019. If your really excited to try the game out I have a, if buggy, fun and expansive beta that can be played. Also: the game is free, so why not try it? Story: On the far off planet of Mundan their lives a once peaceful race of slime at came in a variety of colors. The one to rule this world was the Rainbow Tribe. They built their civilization on the principle of unity and peace, and so it was. Until a fateful day where the different tribes began to release that the planet was running out of resources, a council of the tribes was called to see what to do next. Most of the tribes, headed by the Rainbow Tribe, wanted to take their warships and take over new planets for their resources. Others, like the Green Tribe, wanted to try and salvage Mundan and grow from there. This dispute cause what was forever known as the Slime Wars. To keep the loyalty of the tribes aligned to them, the Rainbow Tribe appointed generals the where loyal to them only. They conquered all the tribes that dared think differently, all but the Green Tribe. The fighting though, made the planet unsalvageable, making finding another planet the only option. You, a member of the green tribe, must take over the "Royal" and free the other tribes and convince them to follow your plans of finding a fresh planet, one with no sentient life. Will you save the galaxy? Or will countless planets be forever covered in slime?
    11. Hello guys, these past weeks I've been trying to implement a PBR shader and OMG there are so many little details. First I started reading this article: https://learnopengl.com/PBR/Theory because it had a lot of good explanations and sample code, and did A LOT of googling for the stuff that wasn't clear enough. Right now I am very confused about why the fresnel term uses the dot product between de halfway vector and the view vector. From theory I thought that the fresnel computes the amount of light that should reflect off a surface depending on the viewing angle and the surface normal, and there are a lot of articles explaining it like that: - https://learnopengl.com/PBR/Theory - https://docs.unrealengine.com/en-US/Engine/Rendering/Materials/HowTo/Fresnel/index.html - https://en.wikipedia.org/wiki/Schlick's_approximation (in the first paragraphs) And I was happy with that knowledge until I started to discover a lot of articles (and even that wiki one in the last sentence) that actually tell you to use the dot product between the halfway vector and light direction. - http://filmicworlds.com/blog/everything-has-fresnel/ (this one just says that it got the formula from the gpu gems article https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch14.html which unfortunately doesn't give details about that) - http://www.codinglabs.net/article_physically_based_rendering_cook_torrance.aspx - https://computergraphics.stackexchange.com/questions/2494/in-a-physically-based-brdf-what-vector-should-be-used-to-compute-the-fresnel-co (there are really good answers here but I couldn't wrap my head around) I tried to read the original schlick's paper but I'm the kind of person that can't really follow all that math without visual examples... In the first image I'm using the dot(N,V) and visually it makes sense. In the second image I'm using the suggested dot(H,L) while having a point light behind the sphere, and I'm just confused, I can't understand what I'm looking at, and why is the normal not needed at all. I have the feeling I may be mistunderstanding or mixing concepts, so I decided to come here and create a thread so maybe someone could explain it with more....simple words? Also here is a code snippet of what I'm currently doing, but just for illustrative purposes ( I'm not looking for code, just some theory explanations): void frag() { float NDF = DistributionGGX(N,H,roughness); float G = GeometrySmith(N, V, L,roughness); float3 F = SchlickFresnel(saturate(dot(V,H)??), F0); float3 radiance = lightColor*attenuation*dot(N,L); // only have a single point light float3 numerator = NDF * G * F; float denominator = 4.0 * saturate(dot(N, V)) * saturate(dot(N, L)); float3 specular = numerator/ max(denominator, 0.001); //avoid division by 0 float3 kd = float3(1,1,1) - F; // if I understood correctly, ks is not needed as it is included in the F term float3 diffuse = albedo/PI; float3 irradiance = (kd * diffuse + specular) * radiance * NdotL; } I know there are a lot of posts talking about this, and I spent a lot of time reading those, but it wasn't entirely clear...so apologies for making another thread asking basically the same thing. Thanks for your time...cheers!
    12. I would get them to open up their console as an administrator then type sfc.exe/scannow to make sure nothing is wrong there... Then they should try reinstalling the appropriate visual studio redistributable and runtimes, also make sure their windows is up to date. You can also factor out a corrupt user profile by creating a new user account as an admin and seeing if it crashes again. You could also have them re-register kernelbase.dll There are many reasons for such a crash to occur so you'll have to trouble shoot a bit more through the process of elimination.
    13. Hello everyone! I'm a high school senior trying to gain as much insight on the game music industry as I can. I've taken up the task to teach myself a ton of music theory and production to better myself as a composer and as a musician overall. Most of what I listen to is from a wide variety of anime and games, and although I'd like to say I'm heavily influenced by Japanese composers, my music is hopelessly all over the place in terms of genre and style. I originally wrote this post to ask for feedback for all of what I've written so far, but it felt like such an open ended question for such a wide variety of music that I've divided my music into sets. I'm here to ask for any feedback on what I have written in this playlist. With that being said, here is a link to the first set of music. Thank you for your time:
    14. 49studebaker

      Github and Viruses

      Not using antivirus software is very dangerous. It is a false sense of security. If you are using windows, Kaspersky free antivirus is very good. If you are using linux you should have antivirus software installed. No security software is 100% effective, but security software is better than no security software. https://usa.kaspersky.com/free-antivirus
    15. We have not been able to replicate this error on our side yet so is quite annoying. Some users of our game are unable to run it, it just crashes out at load and Event Log shows either KERNELBASE.dll or msvcr90d.dll being the issue. The game is old. From 2006-2010. Uses VS2008 to compile. I am also the only one working on it in terms of client side programming and I am no game developer You can see the full Event Logs here, https://community.projecttorque.racing/threads/unable-to-open-game.205/#post-1881 Faulting application name: ProjectTorqueBeta.exe, version: 1.0.0.0, time stamp: 0x5d9a46d1 Faulting module name: KERNELBASE.dll, version: 6.2.18362.418, time stamp: 0x2b181c2c Exception code: 0xe0434f4d Fault offset: 0x00113572 Faulting process id: 0x%9 Faulting application start time: 0x%10 Faulting application path: %11 Faulting module path: %12 Report Id: %13 Faulting package full name: %14 Faulting package-relative application ID: %15 We get players to install: Visual C++ 2008 Redistributable Package (x86) Microsoft .NET Framework 3.5 DirectX End-User Runtimes (August 2008) Sorry I can be more descriptive, I am on mobile at this time. Will be back online later today. Anyone got any ideas?
    16. James Suh

      ~AltarisNine NEW and upcoming RPG~

      Please message Shadow#6439 on Discord if you are interested in working on the project.
    17. alvaro

      Optimized SLERP

      My "first-order correction to LERP" was meant to modify the straight line in LERP to get closer to the arc along the unit sphere. I don't know if the approximation is good enough to be visually acceptable in a game. Here's a much better approximation, which still only uses multiplication and addition, so it should be very fast. float approx_a(float d, float t) { float const x1 = 0.555713f; float const x2 = 0.281959f; float const x3 = -0.207537f; float const x4 = 0.143091f; float const x5 = -0.0925688f; return (1.0f - t) * (1.0 + (1.0f - d * x1 - t * x2 - d*d*x3 - t*t*x4 - d*t*x5) * t * (1.0 - d)); } void approximate_slerp(float const qa[4], float const qb[4], float t, float ret[4]) { float d = qa[0] * qb[0] + qa[1] * qb[1] + qa[2] * qb[2] + qa[3] * qb[3]; float a = approx_a(std::abs(d), t); float b = copysign(approx_a(std::abs(d), 1.0f - t), d); ret[0] = qa[0] * a + qb[0] * b; ret[1] = qa[1] * a + qb[1] * b; ret[2] = qa[2] * a + qb[2] * b; ret[3] = qa[3] * a + qb[3] * b; // The quaternion computed above might be good enough. Its main flaw might be that it doesn't have length exactly 1. // If this is important, you can use the lines below, which will make the length much closer to 1. float l2_norm = ret[0]*ret[0] + ret[1]*ret[1] + ret[2]*ret[2] + ret[3]*ret[3]; float inv_length = 1.5 - 0.5 * l2_norm; ret[0] *= inv_length; ret[1] *= inv_length; ret[2] *= inv_length; ret[3] *= inv_length; } Rearranging things a bit to make the compiler's life easier, you can get this: void approximate_slerp2(float const qa[4], float const qb[4], float t, float ret[4]) { float const x1 = 0.555713f; float const x2 = 0.281959f; float const x3 = -0.207537f; float const x4 = 0.143091f; float const x5 = -0.0925688f; float d = qa[0] * qb[0] + qa[1] * qb[1] + qa[2] * qb[2] + qa[3] * qb[3]; float ad = std::abs(d); // T<n> are quantities that only depend on t, so they can be calculated once for many bones float T1 = t * (1.0f - t); float T2 = 1.0f - t * (x2 + t*x4); float T3 = 1.0f - (1.0f-t) * (x2 +(1.0f-t)*x4); // C<n> are quantities that are shared in the computation of a and b. I'm not sure if the compiler needs help here, but it shouldn't hurt to organize things like this. float C1 = T1 * (1.0f - ad); float C2 = ad * (x1 + ad * x3); float C3 = ad * x5; float a = 1.0f - t + C1 * (T2 - C2 - t * C3); float b = copysign(t + C1 * (T3 - C2 - (1.0f-t) * C3), d); ret[0] = qa[0] * a + qb[0] * b; ret[1] = qa[1] * a + qb[1] * b; ret[2] = qa[2] * a + qb[2] * b; ret[3] = qa[3] * a + qb[3] * b; float final_l2 = ret[0]*ret[0] + ret[1]*ret[1] + ret[2]*ret[2] + ret[3]*ret[3]; float inv_length = 1.5 - 0.5*final_l2; ret[0] *= inv_length; ret[1] *= inv_length; ret[2] *= inv_length; ret[3] *= inv_length; }
    18. alvaro

      Optimized SLERP

      I didn't think anything about your code. I just tried giving it lots of random inputs, to measure the error in my approximation, and this revealed some problems in your results. I am just pointing them out. Try to give this input to your function: q0 = (0.584283 0.670586 0.41005 0.201958), q1 = (-0.651197 -0.648167 -0.342918 -0.195523), t=0.668532 Initially, a=0.331468, b=0.668532. Then you compute d=-0.995236, c=3.04394 (if you use d instead of fabsf(d)), then b=10.257, a=8.68029, b=9.17167, b=-9.17167, which makes the answer be (11.0443 11.7657 6.70448 3.54633), which is obviously not a length-1 vector.
    19. ProfL

      Bare bones AAA team

      Didn't know that. I know that developers of the skill level specified in the OP's original question burn bugs down as quickly as they're found so they don't dog the project and add to the schedule. I believe that you didn't know that, because you don't know me, that's why you can't know my experience. But your reply is orthogonal to what you quoted. Speed vs Predictability. One is the slope of a function, the other is the variance. I have no doubt that most devs will burn bugs down as quickly as they can, that's not team size related, but there are always exceptions, for whatever reason. The simple mathematical fact behind that is: The increase of the sample count, decreases the noise. Means: the more devs, the less the individual counts, but still all horses (supposedly) pull the game into the same direction. If you invest $100M, you might prefer the kind of team that return you $120M in a year, like it works for other companies. Over a team, that might return you anything from $0M to $2000M, in several years. But it really depends whether you "invest" your savings or you "gamble" some pocket money. And I replied to 'OP's original question'. He asked about the minimal AAA team, which (and I repeat that every post ), is not the same as a team that makes an AAA game. You can fund a $115M AAA team that burns money on APB ( https://en.wikipedia.org/wiki/APB:_All_Points_Bulletin ) or you can invest in a small team like Obsidian (afaik 30 devs at that time) who create the best modern Fallout game. (With quite some tech problems, but regarding fans, still the best Fallout)
    20. Yesterday
    21. bzt

      Optimized SLERP

      Hi, Thanks for your interest! I meant that a first-order correction of LERP does not travel on the unit sphere's surface, and most importantly not with constant velocity. SLERP does. That's why I'm trying to make it faster instead of finding a substitute. This is well explained in https://web.mit.edu/2.998/www/QuaternionReport1.pdf (although there's a lot of stuff in that pdf, look around section 6 where a few algorithms are compared and visualized as well. You'll see on the right side graph what makes SLERP special.) I'm going to check again, however my intention with changing the sign of the result by "if(d < 0) b = -b;" was to take care of this. What makes you think that? Think it again. If d < -0.999 then |d| > 0.999. Because the condition is |d| < 0.999, that means it calculates SLERP if d > -0.999 and d < 0.999. It is either SLERP or LERP, there's no third option (or unreasonable results) possible. If it's not SLERP, then the code fallbacks to the default values of a and b, which are initialized for LERP. However there's a mistake in the GLSL version, where I've explicitly checked the interval, there I should have used && instead of ||. Yeah, it was late at night. Cheers, bzt
    22. Jdoobi3

      ~AltarisNine NEW and upcoming RPG~

      Hey, you didn't put in any contact information, do you have discord or something?
    23. Tom Sloper

      Bare bones AAA team

      Didn't know that. I know that developers of the skill level specified in the OP's original question burn bugs down as quickly as they're found so they don't dog the project and add to the schedule.
    24. I've got some questions about what exactly is a white-box tester, so here's the gist of it: A white-box tester is someone with strong technical coding skills that is able to dig under the hood to discover bugs before they manifest (as in corner cases that are rare) and find root causes of bugs already encountered, as opposed to black-box testers that focus on the visible symptoms that players would face. Both may or may not utilize advanced tools and creative thinking to help get their job done, and both help us produce a more solid game. The difference is in the approach and skill set needed. Just for completeness, a black box QA in our team is different from public beta testers in that they focus more on finding bugs in the game, help with test planning, produce bug reports, and work as part of the official team to help narrow down root causes of bugs discovered. Hope that clears it all up, but feel free to post or PM me any additional questions you may have.
    25. Something like this should work for converting the MSAA render target to a regular render target that's either 2x, 4x, or 8x width: Texture2DMS<uint> MSAATexture; uint UnpackMSAA(in float4 ScreenPos : SV_Position) { const uint2 srcTexelPos = uint2(ScreenPos.xy) / uint2(msaaSampleCount, 1); const uint srcSubSampleIdx = uint(ScreenPos.x) % msaaSampleCount; return MSAATexture.Load(srcTexelPos, srcSubSampleIdx); }
    26. Calling ID3D11DeviceContext::Map won't increase the size of the buffer. Think about it: how would that even work? Nowhere do you even have a place to inform D3D how big the buffer should be when you call Map...this is because the buffer has a fixed size specified when you create it. What seems to be happening in your code is that Map is returning a pointer to a block of memory with size == 6 * sizeof(VertexType) and you are overrunning that buffer whenever your string is greater than a single character. To be honest I'm surprised you're not crashing with an access violation. If you enable the debug validation layer I'm sure it will also complain that you're drawing with more indices/vertices than what's present in your buffer. Your second approach is definitely more in line with what you want: you want to pre-allocate your dynamic vertex buffer to some maximum size and make sure that you write no more than that maximum size whenever you call Map. If this isn't working you probably have another bug somewhere. Have you verified that your strings don't have a length greater than m_MaxCharInLine? You may need to clamp the size, or break up those strings into multiple batches of Map, Copy, Unmap, Draw sequences. Either way I would definitely enable the debug validation layer like I suggested earlier, since it will often let you know when you're doing things incorrectly.
    27. Hello everybody, recently I have taken a keen interest in game developement and I am in need of some guidance. 😊 for a bit of background I already have a solid coding basis as I currently study computer science in university as well as a decent level when I comes to concept art which I have been learning on the side for the past five years. The real difficulty with this new hobby is my current lack of time because I have to juggle between Uni stuff, art stuff and social life 😅. In this context i would like to mess around with the unity engine as well as blender to try and make some simple games using assets based on my concept arts.... . To do so I am trying to find a good working rythm using those tools, but I am not getting anywhere because I have difficulties reaching a confort zone leading to an experimentation phase. There is, on one end just too much good ressources available for beginner, and on the other I have been trying them out sporadically rather than regularly (being unity or blender). Thus leading me here on this forum where the community appears to be very friendly 😄 I don't know what would be best, doing a ground up from scratch learning or a top down approach where I reverse engineer a simple working project, I am quite divided on the question... Do you have any recommmandations for me to get regular (~1 hour a day) at using unity or blender ? thanks in advance for your assistance ☺️ PS: english is not my native language so I apologise if my post is hard to follow or if the typos are atrocious 😵
    28. phil67rpg

      plane game collision

      well thanks for all the ideas but I want to stick to freeglut and c++. I will work on my problem in more detail. oh btw I am playing world of Warcraft.
    29. 8Observer8

      plane game collision

      I can help you to rewrite your code to WebGL and JavaScript. This code draw a square and translate it using a matrix from glMatrix library. You can save this code in index.html file and run it by double click. I can show you how to draw an image later. You can read how shaders work in this book: WebGL Programming Guide Playground: https://jsfiddle.net/8Observer8/t2q4rmnm/ index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>WebGL 1.0. Translate a square using glMatrix</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/gl-matrix/2.4.0/gl-matrix-min.js"></script> <style> #renderCanvas { border: 5px solid #aaaaaa; } </style> </head> <body> <canvas id="renderCanvas" width="250" height="250"></canvas> <script> var vertexShaderSource = `attribute vec2 a_Position; uniform mat4 u_ModelMatrix; void main() { gl_Position = u_ModelMatrix * vec4(a_Position, 0.0, 1.0); }`; var fragmentShaderSource = `precision mediump float; uniform vec3 u_Color; void main() { gl_FragColor = vec4(u_Color, 1.0); }`; var gl = document.getElementById("renderCanvas").getContext("webgl"); var vShader = gl.createShader(gl.VERTEX_SHADER); gl.shaderSource(vShader, vertexShaderSource); gl.compileShader(vShader); var fShader = gl.createShader(gl.FRAGMENT_SHADER); gl.shaderSource(fShader, fragmentShaderSource); gl.compileShader(fShader); var program = gl.createProgram(); gl.attachShader(program, vShader); gl.attachShader(program, fShader); gl.linkProgram(program); gl.useProgram(program); var vertices = new Float32Array([ -0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5, -0.5 ]); var vbo = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, vbo); gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW); var a_Position = gl.getAttribLocation(program, "a_Position"); gl.vertexAttribPointer(a_Position, 2, gl.FLOAT, false, 0, 0); gl.enableVertexAttribArray(a_Position); var u_Color = gl.getUniformLocation(program, "u_Color"); gl.uniform3f(u_Color, 0.635, 0.450, 0.125); var modelMatrix = mat4.create(); mat4.translate(modelMatrix, modelMatrix, vec3.fromValues(0.3, 0.3, 0.0)); var u_ModelMatrix = gl.getUniformLocation(program, "u_ModelMatrix"); gl.uniformMatrix4fv(u_ModelMatrix, false, modelMatrix); gl.clearColor(0.898, 0.984, 0.905, 1.0); gl.clear(gl.COLOR_BUFFER_BIT); gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); </script> </body> </html>
    30. i tried many times to do ssao in worldspace i mean: save world position in texture then sample with some vectors but it has some artefacts like some kind of twisted umbrella, so i decided to follow ssao tutorials that store geometry position in viewspace, however i have no idea what kind of numbers i would expect there (like for ndc i get -1.0..1.0 nums) since its opengl es i rather not depend on hardware floating point textures and have to implement my own data storage. So what numbers i can face here?
    31. ProfL

      Bare bones AAA team

      Every developer creates bugs, one individual dev for the whole project might create less bugs than 2, as he knows more about the scope. But from some amount of devs, the bug count will depend on the scale of the project, less on the dev head count. (And to some degree based on the architecture of the software, but that's what every dev gonna tell you to sell his idea of how it should be). From my experience, big teams have a more predictable bug and burn down chart. If you have 3 programmers, every programmer has his area and all bugs in that area are mostly his to solve. There might be 2 or 3 critical on someones table and that might define how stressed out you are. In an AAA team, you get more of a factory feeling. After a week, you see about the average bugs/day for the team, you see who's behind and you can shift the bugs of e.g. one network programmer to another network programmer. When you see the burn down chart falling behind the schedule, you know it's not stuck on one programmer, but just the way it is. You can either cut features, mark bugs as wont fix/minor, or delay the shipping date. (If the burn down is just like 10% behind, you can also ask to work over time or a day more). All is quite predictable. QA and other testing becomes more important in a AAA production, simply cause you can't ask one programmer or artist about the state, you don't even want them to make an assessment. You rather want independent tester who check for bug, but you ALSO want people from outside the dev team that will rate the game in various ways "Is it clear what you have to do?" "Is the UI meaningful" "Is it fun?" "what's the most similar game you know and how does it compare?" etc. That's really an advantage. Again: Your team of 10 might think a game is in a really good shape, you ship, and there are 1000 times the people playing it, with various hardware configurations etc. and you might get pretty bad feedback by that 1% that runs into some bugs. An independent QA might catch most of these bugs. (Edit: The QA is also like an independent factory, you might want a few core people, who know the game, and rotate the other QA people, to have a lot of fresh feedback every week. Nobody biased cause he knows the game for 12 months) But that's really all about your original question. If you would ask "Can a small team create a AAA game?", it would be a different story.
    32. phil67rpg

      plane game collision

      here is a screenshot of my game so far. https://imgur.com/U00bPSN
    33. Yyanthire Studio

      Moonrise

      Moonrise is an open-world real-time strategy game. Explore a vast land rich with demonic creatures. Establish a base, and venture forth to eliminate the powerful beings that have overtaken it. As you venture, you will come across great artifacts to bolster your warriors, and great resources to enhance your fortifications. In this land, the will of the leaders is absolute. One false step, and all of your creation will fall under. Intricate care is necessary for your warriors to survive to the next battle. The creatures of this world are powerful- are you able to stand up to them? Explore- Explore a world rich with conflict, where there’s always a new challenge to endure. And reap the rewards of such ventures. The lands are wide and vast, and the journey will be perilous. Do not get lost- always know your way back home. Gather Resources- All of this world has something to offer- whether it be the nature around, or from the souls of defeated enemies. Use those resources to build your base and your army, and wage war against the vast enemies of this land. As you explore more, you will find powerful foes- slay them, and grow your warriors even stronger with the mystical objects they have to offer. Build an Army- Build up your home base not only to act as a fortitude against the enemy onslaught, but also to enact key, pivotal research points. Whether you wish to give your warriors greater health and mana, or advance them down further into their class, building your base is the only true way to get the advancements necessary for engaging more powerful foes. Research- Whether you choose to spend your hard-earned, limited resources on empowering all warriors, or just a select few, researching various upgrades for your army will allow you to further craft and define the complexities of your army to a solid degree. And those who wish to venture even further will find themselves that much more fruitfully rewarded. Wage War- At the heart of Moonrise is waging war against the multitudes of foes of the land. Foes will wildly vary in volatility, and it is up to you to command your warriors in such a way to slay them without becoming slain yourself. Never stop moving- movement is key to avoiding attacks from enemies while still striking at them yourself. You can avoid enemy attacks by simply moving out of the way before the attack lands. By using clever tactics, you can survive many adversaries and come out unscathed and ready for the next fight. Invoke powerful spells to your advantage- there are many different beings at your disposal. Making use of their talents is the only way to come out successful, and to defeat even the strongest of enemies. In Moonrise, there are dozens of spells, each with wildly different uses, able to be enacted and used as how you see fit to command. State of the Game- This project is very deep into its development cycle now. There is a considerable amount of work that has been done to make the game playable, and as the game sits, it is currently in an Alpha state. There is still more work to be done- we have yet to finalize key features like a saving system, and have yet to get further into our desired open world elements. In addition, while we do have a lot of art done for the project, there is still some remaining, and we have a lot of animations we still need to create. Music and sound effects are the same story. But, as of right now, the game definitely plays like how we envisioned it- lots of tactical complexion backed up with a lot of intricate micro requiring you to not only think intelligently about what you are engaging, but also act swiftly before your units get overwhelmed and killed. Our current goal in regards to the project is to be able to release a playable game by 2020, or sooner if plausible. We may also consider releasing a Beta version of the game for many to play and test, given enough people are interested, but even with that there will be some time before we reach that point. Given the game’s current state, we believe that it would be beneficial to begin to show off the game to you all, the community. Let us know what you think of the project, just by simply typing a comment below. We’ll be happy to answer any questions regarding Moonrise. Thank you for viewing our page! Check us out on IndieDB: https://www.indiedb.com/games/moonrise
    34. Welcome to our twenty-seventh blog post! In this one, we wanted to begin to delve into a specific topic of combat, which are enemy armies. Combat overall in this game can get fairly overwhelming, and difficult to keep track of. But not impossible. One of the ways we wish to emphasize that plausibility revolves around basic combat. We can begin to push what is possible and what isn’t be simply placing more and more foes to be fought. This game is highly based around its combat, after all, so putting that at the forefront is our core design choice. It becomes something that isn’t so simple- its not a boss fight, nor is it statically generated. It is completely random. You’re forced to fluidly follow the world and react to things as they come at you. Which we believe pushes the challenge and design more. As we get even further along, we imagine you’ll be tasked with facing a great many of foes. And, given your training at the earlier stages, you should be amply equipped in dealing with it. It all comes back to our core design we wish for the game- your army clashing against an opponent’s army. Results can go a variety of ways- you can have your entire force wiped out from under you, or perhaps you escape with only a few injures. Or only a single warrior dies. Or you escape completely unscathed, and able to press onward. Maybe a difficult foe blocks your way, so you look for an alternative route. These are things you’ll need to deal with as you improve your control and understanding of the warriors you command. Your soldiers will take damage, consume mana, be positioned incorrectly, die, so on and so forth, and as you fight against these multitudes of foes, you’ll begin to see the importance of dividing your focus so all warriors get the attention they need, evenly. Equally as importantly, you’ll learn to fight with the various disadvantages outlined above, and hone your skills further. Lastly, these designs are not completely unfair. Your progress is retained as you traverse. So, even while you may be faced with a very difficult task, just know the reward is said progress that you will not be forced to repeat. --- Thank you for viewing our post! Support and interest for the project has been rapidly growing ever since we began posting here, and we're incredibly grateful for all the wonderful feedback so far! We hope this project interests you as much as we love developing for it, and please look forward to more updates coming in the very near future! If you’re brand new, consider checking out our trailer and overall description of the game here.
    35. The Garden of Eating will be my second entry here on gamedev.net, a clone of the classic "Snake" game. I'll be using this as a platform to evaluate the SFML library, and to gain further experience in game development in general! Version 1.1 is available on my GitHub account! Story Mode Alpha Version 1.2 is available on GitHub as of Oct 6, 2019. My main goals at the outset: Option to play in a window or full screen. 2D graphics using sprites. Some basic sound effects and background music. I've reached an early milestone for "phase 2", which includes support for building custom story-based campaigns. The story mode currently includes support for: Placing obstacles on the playing field -- ie. map design! Ability to spawn multiple food items at a time, with the ability to define spawn zones on the map. One extra type of food: carrots, which heal the snake by a small amount. One type of danger: a spike trap. A scoring system. Some additional visual enhancements. My overall plan for "phase 2" is to provide a complete (albeit slightly silly) story-based game play mode: Brief story intro. Continue to add different types of fruits / veggies, with different effects on the snake. Progress through multiple levels of increasing difficulty. Graphics and animation enhancements. Controlled music loops that adapt to the game play.
    36. Last weekend I was still thinking through how I wanted to store all the map, texture, and sound assets for cut-scenes. Since then I've managed to work through the asset management, and have completed playback of the opening cut-scenes for levels in story mode. There are a few things coding-wise that I'm not entirely happy with, but cut-scene playback does now work without issue. I did attempt to refactor the rendering of maps into something re-usable for both the main level, and maps displayed during cut-scenes. I ran into technical issues getting the shared rendering code to work, and ultimately back-tracked to duplicating the code. Not where I want to be there for sure... The C++ 11 std::function and lambda expressions are what I struggled with a little there. I'm keeping a mental note to explore these further so that I won't struggle with it next time. During both game-play, and cut-scene playback, maps are fully rendered every single frame. It should be possible to instead render them to a separate texture, and just treat that fully rendered map as a sprite. Performance hasn't been an issue, given how simple this game is. But it's something I'll be keeping in mind for the future. In other news, I am super relieved that I chose to use GitHub, and push to it regularly while developing this game. I had a catastrophic failure with my main development PC, and have been able to continue working on this game without interruption on my laptop. Phew!! 😅 Ok, it's not entirely true it has been without interruption... I have a nasty habit of accidentally tapping the touchpad on this damned laptop while typing, and having the cursor reposition itself all over the place in my editor. 😩 With cut-scene playback effectively in the bag, it's time to start actually crafting the opening cut-scene for story mode. Then I'll be working on adding more types of food, crafting more levels, and generally working on the actual game I want to make! I've added everything I'll be working on as Issues over on GitHub:
    37. If you want high throughput, use buffers bigger than 8 kB. Try at least 64 kB for your read/write chunkiness, an often you get more with more. Also, if you set the buffer size of the socket on both the sending and receiving side, BEFORE you connect/bind/accept the socket, then the TCP connection may be negotiated with TCP window scaling, which can increase how much throughput you can get on high latency connections, as well as increses how much buffering is done in the kernel to mitigate packet loss. It's common to set the socket buffer size to at least 1 MB per socket for high-throughput connections.
    38. Zurtan

      Golden Fall

      Album for Golden Fall
    39. Zurtan

      Golden Fall

      Album for Golden Fall
    40. I think I made progress. I figured that the recv thread needs to do nothing apart from copying packets and pushing them on a queue for a different thread. I tried to do UDP, and I saw that if the recvfrom thread is doing anything but recvfrom and push, I suffer from lost packets. So I think that this will be the case in TCP as well, eventhough TCP has a buffer that hides this issue. I don't do much in the recv thread, but I do enough that it's an issue I think. For the very least, separating recv from constructing the frame, will help me isolate the problem. I am thinking that what we have seen that both recv and send stutter, is because the recv thread wasn't doing the bare minimum like it should. So I am thinking a good solution is to just do something like: 1) recv into buf of about 8000 Bytes. 2) Then push those 8000 bytes into a queue. 3) The queue will be read in a different thread and do the same thing the recv thread used to do with the 8000 bytes,
    41. alvaro

      Optimized SLERP

      One more thing: When d>0.999, it's OK to fall back to lerp; but when d<-0.999 your code returns unreasonable results.
    42. Daniel Lochner

      N.E.S.T

      N.E.S.T is an action-packed, looter-shooter mobile game that entrusts you to save Earth from an alien invasion after a rogue interstellar radio message leads them straight here. Unconventionally however, these aliens don't arrive via spaceships. Instead, large nests crash into Earth's surface, and it is up to you to destroy them all before the aliens regain their full strength, and take over our beloved planet. The development of this game is being logged through weekly devlogs on YouTube, and the full playlist can be viewed here. You can support the development of this game by subscribing to the developer on YouTube here, or by following him on itch.io here.
    43. ▼ Watch the Devlog on YouTube ▼ ▲ Watch the Devlog on YouTube ▲ Hey everyone! I recently started the development of N.E.S.T, an action-packed, looter-shooter mobile game, and have been logging the progress through videos on YouTube every week! You can view the full playlist here. I would greatly appreciate if you could support the development of this game by subscribing to me on YouTube here, or by following me on itch.io here. Thanks for your time, and hope to see you all there!
    44. How do I need to register to receive device notifications for changes to an XBox One Controller? More concretely I want to receive WM_DEVICECHANGE messages with wParam == DBT_DEVNODES_CHANGED. DEV_BROADCAST_DEVICEINTERFACE notification_filter = { .dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE), .dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE }; RegisterDeviceNotification(m_window, &notification_filter, DEVICE_NOTIFY_WINDOW_HANDLE | DEVICE_NOTIFY_ALL_INTERFACE_CLASSES); I already use XInput to query the state and capabilities of the controllers, but to avoid polling the (potentially wireless) controllers every frame, I would use the change message to conditionally poll instead.
    45. 8Observer8

      plane game collision

      I use Camtasia to export a video to gif-animation.
    46. phil67rpg

      plane game collision

      how do I post an animated video like above?
    47. davidkilmer

      Burn Baby, Burn!

      It is now time to implement FIRE! It seems odd that just now, after eight months of development, we are implementing fire into this game, being what it is (essentially a caveman). I think I have now come across one of the few same issues that I have spawned from the inception of this code. That is that base form aux tiles are not really treated as Item_Objects, but not visa versa, and that therein lies what I believe to be an issue. Essentially, to add burn, I went right to the Item_Object file and added Burn Hours and Item To Replace When Burned. This seems logical as if there is 0 for burn hours, the item is not burnable, anything else, it can burn for that long before being replaced with what would presumably be a useless version of the item originally burned. The problem, is Trees only exist in the fashion of being a aux tile, and that is it. Bushes could burn too, and they also only exist as a tile and not anything else. So we will start another “controller” and call it the fire controller. The purpose of this controller is to be the center point of a class called ‘fire_locations’ which will be attached to all Item_Objects that are on fire as well as tiles that are burning. It will also keep time on burning items and tiles, and switch the items and tiles once burned ( adding and removing the fire object as well ). That file is now started, a class as discussed, and some basic functions and a update that updates all the burning locations. Game runs normally and now we begin to try and figure out how this is all going to work. I am thinking that an Item_Object can have a “UseType” enum, where I have placed some values such as Fire, Shelter/holding, mining, cooker, forge . So the bow drill can be of UseType Fire, meaning that when it is used ( so either the use button is pressed, the user than places the item on the map, a fire starts assuming something is there to burn ), or in the event it is a shelter, it is now a semi permanent item on the map. This use type will help determine what happens at interaction and production of other items. We are starting to enter a crazy area of development, and I would hate to point out the flaws in my own coding design, but they are starting to become apparent now. I never once have thought about having prefabbed game objects containing the Item_Object script, versus constantly creating blank game objects and running the script and its appropriate actions/reactions on the fly. Honestly, I am not sure which one is better, but I fear/feel it will become more apparent as we continue on with this. It is only a prototype, and I guess that is where I can hang my hat. So, now that I have just opened a can of worms, lets take a single worm and make him tick. Lets start a damn fire! ( last night, I realized a rain storm should put fires out lol ). Success! Our little guy can build a camp fire and light it with his bow drill, and he can even light the forest on fire ( little shit! ). Lighting is not right, needs to flicker, isn’t lighting the player, not close enough to the camera, fire isn’t counting down its own clock, and the player can walk through the fire, pick up his campfire ( which goes into a void? Not back in the inventory, but of course, we don’t want this behavior to occur anyways. ) So yeah….. got some work to do! AAAAAHHHHAHAHAHAHAHAHA!!!!!! View the full article
    48. Tomato Head

      How to add skill to a turn based game

      Final Fantasy VI (basically a turn based combat game) had Sabin which was a fighter that you actually had to input his combos. The more complicated the key inputs the better the effect. If you messed up he would either do a very basic attack or stumble. Every character in that game had different mechanics, and even if Sabin demanded a little bit more I never found him cumbersome or annoying to play, quite the opposite.
    49. I made a simple example with checking of collision with right wall: Plunker: https://next.plnkr.co/edit/Bgf18uHzIkrRw9oW?preview CodeSandbox: https://codesandbox.io/s/texture-movement-webgl-10-typescript-3v8c6 GitHub + Build Instruction: https://github.com/8Observer8/texture-movement_webgl10-typescript private GameLoop(): void { this.Update(); this.Draw(); requestAnimationFrame(() => this.GameLoop()); } private Update(): void { this._x += 2; // Check a collisiion with the right wall if (this._x > this._gl.canvas.width) { // Move an object to left wall this._x = 0; } mat4.identity(this._modelMatrix); mat4.translate(this._modelMatrix, this._modelMatrix, vec3.fromValues(this._x, this._y, 0)); mat4.rotateZ(this._modelMatrix, this._modelMatrix, 0 * Math.PI / 180.0); mat4.scale(this._modelMatrix, this._modelMatrix, vec3.fromValues(32, 32, 1)); let uModelMatrix = this._gl.getUniformLocation(this._program, "uModelMatrix"); this._gl.uniformMatrix4fv(uModelMatrix, false, this._modelMatrix); } private Draw(): void { this._gl.clear(this._gl.COLOR_BUFFER_BIT); this._gl.drawArrays(this._gl.TRIANGLE_STRIP, 0, 4); }
    50. 8Observer8

      plane game collision

      I made a simple example with checking of collision with right wall: Plunker: https://next.plnkr.co/edit/Bgf18uHzIkrRw9oW?preview CodeSandbox: https://codesandbox.io/s/texture-movement-webgl-10-typescript-3v8c6 GitHub + Build Instruction: https://github.com/8Observer8/texture-movement_webgl10-typescript private GameLoop(): void { this.Update(); this.Draw(); requestAnimationFrame(() => this.GameLoop()); } private Update(): void { this._x += 2; // Check a collisiion with the right wall if (this._x > this._gl.canvas.width) { // Move an object to left wall this._x = 0; } mat4.identity(this._modelMatrix); mat4.translate(this._modelMatrix, this._modelMatrix, vec3.fromValues(this._x, this._y, 0)); mat4.rotateZ(this._modelMatrix, this._modelMatrix, 0 * Math.PI / 180.0); mat4.scale(this._modelMatrix, this._modelMatrix, vec3.fromValues(32, 32, 1)); let uModelMatrix = this._gl.getUniformLocation(this._program, "uModelMatrix"); this._gl.uniformMatrix4fv(uModelMatrix, false, this._modelMatrix); } private Draw(): void { this._gl.clear(this._gl.COLOR_BUFFER_BIT); this._gl.drawArrays(this._gl.TRIANGLE_STRIP, 0, 4); }
    51. bool GlyphClass::InitializeBuffers(ID3D11Device* device) { VertexType* vertices; unsigned long* indices; D3D11_BUFFER_DESC vertexBufferDesc, indexBufferDesc; D3D11_SUBRESOURCE_DATA vertexData, indexData; HRESULT result; int i; m_VertexCount = 6; m_IndexCount = m_VertexCount * m_MaxCharInLine; vertices = new VertexType[m_VertexCount]; if (!vertices) { return false; } indices = new unsigned long[m_IndexCount]; if (!indices) { return false; } memset(vertices, 0, sizeof(VertexType) * m_VertexCount); for (i = 0; i < m_IndexCount; i++) { indices[i] = i; } vertexBufferDesc.Usage = D3D11_USAGE_DYNAMIC; vertexBufferDesc.ByteWidth = sizeof(VertexType) * m_VertexCount; vertexBufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER; vertexBufferDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; vertexBufferDesc.MiscFlags = 0; vertexBufferDesc.StructureByteStride = 0; vertexData.pSysMem = vertices; vertexData.SysMemPitch = 0; vertexData.SysMemSlicePitch = 0; result = device->CreateBuffer(&vertexBufferDesc, &vertexData, &m_VertexBuffer); if (FAILED(result)) { return false; } indexBufferDesc.Usage = D3D11_USAGE_DEFAULT; indexBufferDesc.ByteWidth = sizeof(unsigned long) * m_IndexCount; indexBufferDesc.BindFlags = D3D11_BIND_INDEX_BUFFER; indexBufferDesc.CPUAccessFlags = 0; indexBufferDesc.MiscFlags = 0; indexBufferDesc.StructureByteStride = 0; indexData.pSysMem = indices; indexData.SysMemPitch = 0; indexData.SysMemSlicePitch = 0; result = device->CreateBuffer(&indexBufferDesc, &indexData, &m_IndexBuffer); if (FAILED(result)) { return false; } delete[] vertices; vertices = 0; delete[] indices; indices = 0; return true; } vertex buffer will be variable each frame.... user will be typing and glyph vertex buffer data will add to or decrease depend upon typing ... i am allocating only 6 vertices ( m_VertexCount = 6 ) and i see only one glyph instead of of complete text of m_StringToDraw ... vertexbufferDesc is not updating with ... WRITE_DISCARD even... user with BACKSPACE can reduce m_StringtToDraw to null even or max 260 chars. vertexbuffer must update in accordance with new string... iam getting bad screen flickering if i do vertexBufferDesc.ByteWidth = sizeof(VertexType) * m_VertexCount * m_MaxCharInLine; m_MaxCharInLine = 260
    52. RickBaker

      Bare bones AAA team

      I love that, but wouldn’t more devs everywhere also introduce more bugs that would require QA to work out? I get the ego as it is the same in the film world.
    53. emanubit

      PulseHazard

  • 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!