Jump to content
    1. Past hour
    2. Awesome. Thanks guys! And I'll be sure to do that mr_tawan. The font size does make the github icon a bit hard to see, and it's always better safe than sorry.
    3. frob

      Share a pointer

      Many times when there is communications it is best to work on layers. From your description where you have two windows that need to share data, one option is to have each window draw any data that is given to it through a pointer. Then a different system can provide both windows with a pointer. That separate system can also respond to input events and notify windows when there is something new or different to draw. This type of composition is common in user interfaces and handled with ownership. An individual button, an individual text box, an individual icon, each of them knows how to draw one thing. They are put into a bigger container control that tells each button and text box what to do. That bigger control might be placed inside another window, controlled by the application. The individual icons might be reused in many places, and the application might forward update events to any number of windows and to any number of UI controls, but the individual UI controls don't need to know or care about others that use the data. It looks like you also have discovered the critical issue of understanding object lifetimes. Controlling object lifetimes is a critical part of software engineering, and doing it wrong results in crashes (when something isn't there any more) and resource leaks (when it wasn't properly cleaned up). Having a reliable hierarchy helps with lifetimes, since a parent can assure a child object that it will not assign the value until after it is valid, and it will notify the child before modifying or destroying objects that have been assigned.
    4. Hi Guys, If your application requires a DLL, is there a way to check that the DLL is present gracefully rather than the typical error that gets thrown? For example - 'The code execution cannot proceed because xxxxxxxx.dll was not found. Reinstalling the program may fix this problem'. In my case the DLL is my own, if that makes any difference. Thanks in advance.
    5. If I were you, I'd expanded the github into the url like https://github.com/JonahBrooks in the cv. The reason is while most people know the symbol, there are still some people that's not familiar with it and will find difficulties looking for your repos in github. It's probably not necessary in the states though... And those who find it relevance would know how to look for the repos anyway.
    6. That looks good to me. To make it reach the end of the page you might add an extra line of what you did on some of those projects, but if I was in Oregon and hiring, that is enough to pique my interest.
    7. Today
    8. Oh well I've changed it now. You are right, I was using separate source and destination buffers up to a point and I didn't realise what I was doing when I changed it! Its fixed and its faster: #include "PPC.h" #include <thread> static const float G = 0.0000001F; const int count = 4096; __declspec(align(64)) float px0[count]; __declspec(align(64)) float py0[count]; __declspec(align(64)) float px1[count]; __declspec(align(64)) float py1[count]; float* pointsx0 = px0; float* pointsy0 = py0; float* pointsx1 = px1; float* pointsy1 = py1; void SetData(float* x, float* y){ memcpy(px0, x, count * sizeof(float)); memcpy(py0, y, count * sizeof(float)); memcpy(px1, x, count * sizeof(float)); memcpy(py1, y, count * sizeof(float)); } void Compute(float* points, float* velx, float* vely, long pcount, float aspect, float zoom) { #pragma omp parallel for for (auto i = 0; i < count; ++i) { auto forcex = 0.0F; auto forcey = 0.0F; for (auto j = 0; j < count; ++j) { if(j == i)continue; const auto distx = pointsx0[i] - pointsx0[j]; const auto disty = pointsy0[i] - pointsy0[j]; const auto force = G / (distx * distx + disty * disty); forcex += distx * force; forcey += disty * force; } pointsx1[i] = pointsx0[i] + (velx[i] -= forcex); pointsy1[i] = pointsy0[i] + (vely[i] -= forcey); if (zoom != 1) { points[i * 2] = pointsx1[i] * zoom / aspect; points[i * 2 + 1] = pointsy1[i] * zoom; } else { points[i * 2] = pointsx1[i] / aspect; points[i * 2 + 1] = pointsy1[i]; } } const auto pxt = pointsx0; const auto pyt = pointsy0; pointsx0 = pointsx1; pointsy0 = pointsy1; pointsx1 = pxt; pointsy1 = pyt; } The code is now SO fast i can do 32768 points at 58 FPS on a server with 2x 14 core Xeon E5 2695 v3's and its absolutely mesmerising!
    9. Updating the OP makes it difficult to follow the conversation, so please don't do that. You can just post updated code in another message. Even in the single-threaded scenario, it's probably wrong to update the particle positions as you go. Anyway, I suggest you start with 2 particles, then 3 and see if you can follow the calculations by hand. If you have the working version of the code somewhere else, you can make both versions spit out details of what they are doing so you can track where they diverge. Debugging is an important skill to develop, and this is a good opportunity to do so. Good luck.
    10. I should have mentioned it does the same thing without multithreading, I did the same thing in the multithreaded one that works properly, I see what you mean though and thanks for the tips. I will update the OP with the changes I have made.
    11. There is no game currently on the market that takes place in the setting or expresses the message we are conveying. The game takes place at a comic con and centers around what it’s like to be a woman in nerd culture.
    12. Its looks like a data driven pseudo-polimorphysm. It what same i mean under "make it by 100% data driven way in case set of classes allow it." It able to serve well for tiny set of classes, and say more it has been a mainstream solution on pre-OOP age while sets of behavior varians has been tiny. But with growth of number of behavior variants it becomes to hard to maintain/enlarge it, and also with growth of behaviors complexity handler of behaviors often became to Turing-full virtual machine.
    13. So, what's going to make it groundbreaking? I know people don't like to give away too much for fear of their ideas being stolen, but sell me on your idea and tell me why I should be interested.
    14. fleabay

      shooting bullets

      For my space game I created bullets and gave them the same position, rotation and velocity (maybe acceleration also) as the ship and then gave them acceleration in the forward pointing vector of the ship. Then you can use the same method to draw the bullets as you do the ship.
    15. Thank you for the input! I have updated my resume to be 1 page, and incorporated the rest of your advice as well. It's a lot more concise now. I'm still thinking of making a website with code snippets and links to the itch.io games instead of linking to itch.io and github. I've heard videos demonstrating the games is a good idea, so I might include those as well. Thanks for your time and input. Jonah_Brooks_Resume.pdf
    16. I don't have a solution to your problem, but I see a few opportunities for improving your code. pointsx[i] += velx[i] -= fx; pointsy[i] += vely[i] -= fy; That's hard to read. Try to make life easy for the reader. You don't need Math.sqrt() to check if a distance is greater than 1: Just check if the distance squared is greater than 1. You shouldn't use goto where a more descriptive control-flow mechanism exists. In this case it's just a do-while loop. You are mixing the computation of the updated positions and velocities with the details of the representation (aspect, zoom). That is poor taste. A function that is called Compute should not be in the business of doing any part of the rendering, and it should not know anything about how the positions will be mapped to a screen. Oh, maybe I found it: You are updating positions and velocities as part of the parallelized loop, while other threads might be reading from it. There's no guarantee if the other threads are going to read the positions before the update or after the update, or even if they are going to read a valid position at all (maybe they'll get the old x but the new y?). You need to store the new positions and velocities in a separate array and do the updating once the parallelized loop is over.
    17. I'm trying to use Assimp to convert a custom format to .FBX. I was abled to export model geometry, bone hierarchy and weights correctly. Rotation of the bones appear to be correct as well. My problem is, none of the bones have any translation (0,0,0). So when loaded into Maya, entire bone hierarchy appears as a single dot at the origin. Any ideas as to what I may be doing wrong?
    18. Hello all! It has been two months since the last blog update, but the dev team has been hard at work. Here is a snippet of most recent state of the UI/UX Library. We are now officially progressed to the point where sectioning them into their respective sub-screen categories. From now on all upcoming icon update will be presented in this contextualized manner. So with that, here are the updates from your UI/UX designer! The first image base icons show the root level of the radial interface, as well as a few of the immediate sublevels and some "particle" icons that specify further actions with the same category. The second image presents the newest set, the Ship Builder screen icons. These are the icons for the controls used when building and customizing player-made ships. The third image shows the radial interface in its expanded secondary ring form, along with several of the new icons placed within (several are dummy repeats for the sake of spatial referencing.) Full story »Original post blogged on Rank: Warmaster Dev Blog. View the full article
    19. Yeah, not a ninja looting problem, I just want to make sure the player has a responsive looting experience. As you said, I guess I could update the inventory matrix (check if it fits), and then run the query asynchronously, and if anything goes wrong, we go from there. That way, they'll be able to loot instantly w/o waiting for round trip times. That sounds like a good solution, thank you. Actual latency I don't know off hand, but I just want the player who chooses the closest server to have good latency w/o the master server hindrance (waiting for round trip times). Which I believe your second paragraph is a solution to that, again, it's appreciated. @Aceticon lol yeah. I saw your previous post and was like what in the hell is going on. I got the data structure down and whatnot. Item looting works great, and I have diff modes, free for all, short allocation, etc which the party leader can choose. I was just curious how to implement/run the queries to give the illusion of quick response times. Thanks for your post as well.
    20. First, you seldom want to have your game servers talk directly to database servers. Typically, you'll want your game (simulation/network) servers to talk to an application server, which in turn talks to some database. This lets you scale simulation separately from back-end. Plus, if a game server is "owned" by hacking, the hacker can't just do "select * from users" to get all email addresses and hashed passwords. Presumably, your application servers aren't directly exposed to the greater internet (only to game servers,) and don't have a "return all players" function/request, so the potential attacker would then have to break the app server, after breaking the game server, to get at the full data. Second, you typically don't want to do anything synchronous in a game. You want everything to be optimistically assumed to succeed, send an asynchronous request, and when it actually succeeds or fails, you go ahead and deal with that as a follow-up resolution. This goes for anything from client-side hit detection to the loot case you talk about. Let the game server tell the client that the item was looted, queue a RPC through some queue to give the object to the player, and when that completes, mark the item as "actually complete." You may be able to show the item, but not actually use it, until it's actually complete, for example. Third, what is the actual measured latency? You should see maybe 50 milliseconds from east to west coast between data centers. This is not a very large amount of latency. If your game has a ninja looting problem where the database needs to be involved and 50 milliseconds of looting latency more or less, matters, then your game has a HUGE FRICKING DESIGN PROBLEM that you probably should be addressing using other means than shaving milliseconds 🙂 Fourth, most games don't actually send every single request through the database. Instead, the game server caches the result in RAM, and occasionally checkpoints the state back to persistent storage. This may be done in a streaming fashion (say, write update events back through a message queue) or in a single-checkpoint fashion (say, fork the process and write all object state into some durable database.) If the game server crashes between you looting the item, and the checkpoint happening, you lose the item. Sucks, but hopefully your servers don't crash that often! (And if you stream out updates to persistent storage, you can actually get around that problem, too.) Presumably, the real arbiter of "who gets the item" when looting is the game server, not the database -- having a case where player A in Australia using server A is competing against player B in Washington State on server B, would be inherently bad for a number of other reasons, not the least of which is that syncing state between distant servers in real time is in itself causing a bunch of lag.
    21. Yesterday
    22. phil67rpg

      shooting bullets

      should I use the glRotatef function to rotate the bullet around the plane sprite or should I use the sin and cos functions.
    23. Gas Lantern Games

      [GAME] Ant Empire

      Thanks for the feedback! I really appreciate it.
    24. @Vilem Otte Ahh, I see the invite link now. Was only showing the link to the channel directly when I checked yesterday for some reason (unless it was there in the first place and I'm just blind). Can confirm, OP: haven't spent a lot of time in the GDNet server yet, but this looks like a great server for gamedev. Seems to be a pretty nice, relatively closeknit and active community there, with a few channels for gamedev specifically (programming, graphicsdev, creative, business). Would definitely recommend joining it. It is indeed
    25. Dirk Gregorius

      FBX SDK skinned animation

      No, I am suggesting that you transform your mesh vertices on the CPU and then render the transformed mesh. Similar to to what you did for the skeleton. Basically I am suggesting for you to take smaller steps so succeeding in solving your problem becomes easier.
    26. *** I completely replied to the wrong question before, sorry *** On your question: A couple of thoughts: - You adjust your data structure to make it a non-issue, for example by making the loot only looteable by the player which has opened the container or landed the killing blow on the monster. - Make the outer server take the decision and communicate it back to the client AND to the main server in parallel. If you're worried about failures of comms between the outer server and the main one, add redundancy in the middle (say, message queuing). - If multiple people can take the same loot, accept that somewhere in your design there will need to be some kind of "quirk" as there must always be a cutoff point were the system decides that "this belongs to player A or to player B". This might be the unfairness that you described (i.e. closest is most likely to win). some kind of different unfairness (player with fastest Internet Connection wins) or it might be a non-unfair but wierd system where sometimes BOTH get the loot (i.e. if outer servers made the decision and two decided "it's my player's" in parallel, then the master server might clone the loot and give it to both). - You might leave the decision to the outer servers but implement a system where the client only gets a confirmation that the player got the loot once the master server has been informed and confirmed which one gets it. This works by the master server receiving a request from an outer server and then waiting for a certain time (likely less than a second) to check if any other requests come from other outer servers for the same loot. If not, the loot gets given, if so, then both requests get compared using the OUTER server timestamps for fairness and the earlier one gets it. This not being money or something like that which is not supposed to be lost or created due to a bug, I would probably go with the "clone the loot" option if this unfairness really worried me or leave it unfair (it the time difference are usually less that 200ms, which a typical human reaction time), as the last option whilst impeccably fair is a PITA to implement, has further implications (such as keep the outer server clocks in synch) and thus is probably not worth the work.
    27. CoronaRob

      Linux builds for Corona

      Corona Labs is pleased to announce early beta testing for Linux builds. With this feature you can use the Corona Simulator either on Windows or macOS to produce a Corona build that should run on Debian and generic x86-64 Linux platforms. This feature is currently in a limited beta test. You will need to enable building before the option appears in the simulator. Information on enabling the Corona Simulator to make Linux builds can be found in pinned posts either on: Our community forums ( https://forums.coronalabs.com/forum/662-linux/ ) or Our community Slack’s #linux channel ( https://coronalabs.com/slack/ ) We request that any observations, comments and issues be reported at those two locations. Note: This is using Windows and macOS to make apps that run on Linux. This feature is not running the Corona Simulator on Linux to make Android builds. View the full article
    28. The way I'm doing things right now is: For static meshes, I calculate a "toRootTransformation" 4x4 matrix for every node, based on the hierarchy of the nodes. Then for every node that contains a mesh, I render the mesh with a shader looking like this: #version 430 uniform mat4 ProjectionMatrix; uniform mat4 CameraMatrix; uniform mat4 ModelMatrix; layout(location = 0) in vec3 vertex; layout(location = 1) in vec2 uvs; layout(location = 2) in vec3 normal; out vec2 fsUvs; out vec3 fsNormal; void main() { gl_Position = ProjectionMatrix * CameraMatrix * ModelMatrix * vec4(vertex, 1.0); fsUvs = uvs; fsNormal = normal; } Before that I set the ModelMatrix uniform to that toRootTransformation. For skinning, I upload the bone matrix array uniform to the shader, calculate each vertex position based on it, and multiply by the same "toRootTransformation" as before. Here's the main part of the vertex shader: void main() { vec4 final = vec4(0); for(int i = 0; i < NUM_INFLUENCE_BONES; i++) { vec4 v = Bones[boneIndices[i]] * vec4(vertex, 1.0) * vertexWeights[i]; final += v; } gl_Position = ProjectionMatrix * CameraMatrix * ModelMatrix * final; } Every bone matrix is a multiplication of the bone's inverseBindPos matrix and the matrix that is the product of all the rotations/translations of the bone at the current time, based on the node hierarchy. In code: void Bone::calculateFinalMatrix() { //matrix for the shader _finalMatrix = _animationMatrix * _inverseBindPosMatrix; //_animationMatrix is already calculated by AnimationController } To be honest this is the product of like a week of struggling to get skinning done, and I'm not sure if I'm doing it right. (please correct me if not) The question that I ask myself is why do I need to multiply each bone by the inverseBindPos first. It transforms each vertex from world to local space, before multiplying by the animation matrix. But the thing is that the vertex isn't in world space to begin with, but in local space. So basically we're going from local space to local space (then animating) which doesn't make sense.
    29. I've been experimenting with my own n-body simulation for some time and I recently discovered how to optimize it for efficient multithreading and vectorization with the Intel compiler. It did exactly the same thing after making it multithreaded and scaled very well on my ancient i7 3820 (4.3GHz). Then I changed the interleaved xy coordinates to separate arrays for x and y to eliminate the strided loads to improve AVX scaling and copy the coordinates to an interleaved array for OpenTK to render as points. Now the physics is all wrong, the points form clumps that interact with each other but they are unusually dense and accelerate faster than they decelerate causing the clumps to randomly fly off into the distance and after several seconds I get a NaN where 2 points somehow occupy exactly the same x and y float coordinates. This is the C++ DLL: #include "PPC.h" #include <thread> static const float G = 0.0000001F; const int count = 4096; __declspec(align(64)) float pointsx[count]; __declspec(align(64)) float pointsy[count]; void SetData(float* x, float* y){ memcpy(pointsx, x, count * sizeof(float)); memcpy(pointsy, y, count * sizeof(float)); } void Compute(float* points, float* velx, float* vely, long pcount, float aspect, float zoom) { #pragma omp parallel for for (auto i = 0; i < count; ++i) { auto forcex = 0.0F; auto forcey = 0.0F; for (auto j = 0; j < count; ++j) { if(j == i)continue; const auto distx = pointsx[i] - pointsx[j]; const auto disty = pointsy[i] - pointsy[j]; //if(px != px) continue; //most efficient way to avoid a NaN failure const auto force = G / (distx * distx + disty * disty); forcex += distx * force; forcey += disty * force; } pointsx[i] += velx[i] -= forcex; pointsy[i] += vely[i] -= forcey; if (zoom != 1) { points[i * 2] = pointsx[i] * zoom / aspect; points[i * 2 + 1] = pointsy[i] * zoom; } else { points[i * 2] = pointsx[i] / aspect; points[i * 2 + 1] = pointsy[i]; } /*points[i * 2] = pointsx[i]; points[i * 2 + 1] = pointsy[i];*/ } } This is the relevant part of the C# OpenTK GameWindow: private void PhysicsLoop(){ while(true){ if(stop){ for(var i = 0; i < pcount; ++i) { velx[i] = vely[i] = 0F; } } if(reset){ reset = false; var r = new Random(); for(var i = 0; i < Startcount; ++i){ do{ pointsx[i] = (float)(r.NextDouble()*2.0F - 1.0F); pointsy[i] = (float)(r.NextDouble()*2.0F - 1.0F); } while(pointsx[i]*pointsx[i] + pointsy[i]*pointsy[i] > 1.0F); velx[i] = vely[i] = 0.0F; } NativeMethods.SetData(pointsx, pointsy); pcount = Startcount; buffersize = (IntPtr)(pcount*8); } are.WaitOne(); NativeMethods.Compute(points0, velx, vely, pcount, aspect, zoom); var pointstemp = points0; points0 = points1; points1 = pointstemp; are1.Set(); } } protected override void OnRenderFrame(FrameEventArgs e){ GL.Clear(ClearBufferMask.ColorBufferBit); GL.EnableVertexAttribArray(0); GL.BindBuffer(BufferTarget.ArrayBuffer, vbo); mre1.Wait(); are1.WaitOne(); GL.BufferData(BufferTarget.ArrayBuffer, buffersize, points1, BufferUsageHint.StaticDraw); are.Set(); GL.VertexAttribPointer(0, 2, VertexAttribPointerType.Float, false, 0, 0); GL.DrawArrays(PrimitiveType.Points, 0, pcount); GL.DisableVertexAttribArray(0); SwapBuffers(); } These are the array declarations: private const int Startcount = 4096; private readonly float[] pointsx = new float[Startcount]; private readonly float[] pointsy = new float[Startcount]; private float[] points0 = new float[Startcount*2]; private float[] points1 = new float[Startcount*2]; private readonly float[] velx = new float[Startcount]; private readonly float[] vely = new float[Startcount]; The compiled x64 AVX versions can be downloaded from my server here: How it should work: Single thread: http://commanderlake.net/PPsingle.7z Multithread: http://commanderlake.net/PPmulti.7z Current broken version: http://commanderlake.net/PP.7z Edit 0: It seems that adding 3 zeros to G increases the accuracy of the simulation but I'm at a loss as to why its different without interleaved coordinates. Edit 1: I somehow achieved an 8.3x performance increase with AVX over scalar with the new code above!
    30. Continuing to work on “Eldest Souls” (first article here!), I’ve begun familiarising myself with the workflow between Fmod and Unity, and the integration system. I know much of this will be pretty obvious to most, but I thought I’d share my thoughts as a complete beginner learning the ropes of sound designing. The library of sounds that Fmod provides has been very useful, at least as reference points. I’ve still kept to my ethos of producing the sounds myself as much as possible. Having said that, Fmod gives you 50 free sounds with your download, and I’ve used a wooden crate smash, a drawbridge and electricity sound you can hear in the foley video below. The thing i found most useful was witnessing changes i made in Fmod being realised instantly in Unity. If a volume needed changing, or the timing of one of my effects was off, i can literally switch to Fmod and then back to Unity and immediately see the result of my alterations. It also seems apparent that using middleware such as this (or i've heard Wwise is also equally intuitive) grants the developer, and myself included, a great deal more flexibility and opportunity to edit sounds without going all the way back to a DAW, and bouncing down again. Needless to say, my workflow is so much faster because of it. I've also loved the randomised feature of Fmod, whereby any sound can be made to sound slightly different each time it is heard. Taking a footstep recording i made for example, I was able to add further authenticity of uneven footsteps by randomising the pitch and volume of each playback. I used this technique when creating footsteps for the first major boss in the game called "The Guardian". A big, over-encumbered husk of a monster. I also had fun rummaging through the garage for old tools and metal components for the “Guardian” (the first boss) footsteps. See below! I also created a sword attack for our player, trying to sound different from the generic “woosh” I see in so many video games. I used a very “sharp” and abrasive sound to differentiate him from any enemies. On another note, I recently upgraded my microphone to a Rode NTG2 shotgun, which has been phenomenal. I haven’t had to worry about noise interfering with the clarity of my objects, whereas before with the sm58 I had to be clever with my EQ and noise reduction plugins. Important to note again that this still a “cheap” mic in comparison to most other products on the market, and all in all my entire setup is still very simple and affordable which I’m quite proud of. I’ve seen many musicians spend heaps of money on gear they don’t necessarily need. I much prefer being resourceful with less equipment, than to have more than I can understand or remember how to use. It’s forced me to understand every aspect and capability of my tools, which I believe is a principal that can be applied to any discipline. I have more fun little sound effect videos on my Instagram for those interested, where I post regular updates. Thanks for reading! (if you’ve made it this far) www.sergioronchetti.com INSTAGRAM fallenflagstudio.com
    31. mrMatrix

      FBX SDK skinned animation

      I saw your code but I used TLang's extended article to get me to where I am with the skeleton working. Now to go back to CPU I dont see the point since my mesh is already heavily simplified. Again, I'm just following his published article. What you propose is to what exactly? Write individual poses onto my XML file and then read them back and then load them onto the GPU in a sequence instead of what I'm doing now which is...traditional gpu skinning? I'm sorry, the FBX terminology is confusing, and according to TLang a " Each cluster is and is not a joint...... You can see a cluster as a joint, but actually, inside each cluster, there is a "link". This "link" is actually the real joint,"
    32. kseh

      Am I biting too much?

      Also, if it's the card game elements that you're most passionate about, you could just focus on that at first. Have the project initially skip everything you have for wandering around and just get straight to the card battles.
    33. Daniel Peterson

      GJK warm starting

      Thanks @Randy Gaul! Great, I will give it a try then. And thanks for the links, I will have a look!
    34. kseh

      Am I biting too much?

      I'd say it depends on a combination of your programming skills, how much time you have, what you already have available to work with, how determined you are, and maybe a degree of your love for the project. In some ways, an RPG can be pretty simple. Spit out a tilemap and a character sprite or two. The player walks around until he finds an enemy and then you resolve combat of some kind. Add to the character's current gold if he wins. But it's all in the details. How are you going to put together the world? How do you make sure the player does things in the order you want? How do you add a variety of tactics to combat? What if you think of something you want to add later? And then there's the learning curve for any new tools or coding techniques you might figure on using. For me, my current (solo hobby) project is a simple RPG style story on rails. Basically, go talk to one character then the next and the next to advance a story as you move around a small pre-built world. No combat. I'm doing both coding and the sprites myself. As a hobbyist, it's probably fair to say I don't spend as much time on my project as others might. I average on 1.5 hours per coding session with 12 months having 2 sessions a week and 5 months with 5 sessions a week. I'm kinda hoping maybe I'll be done in 4 more months (5 sessions a week) but that might be optimistic. I'd love to work on other projects or switch back over to the the project I used as the base for this one and update it with the features and tools I've built since, but I'm pretty determined to see this one through first. So... I figure it has less to do with the size of the bite you take and more about how determined you are to chew through it all.
    35. GoliathForge

      My Current Game Design Project

      This is really cool. An option that doesn't require redoing keyframes and timings could be to mix in animation aticipation at runtime. Not on every action but only on changed action. An added subtile layer that can clue the opposing player of the hurt that is about to happen and also double as a transition effect smoothing out or to emphasize. Something like this could take you to the next level of quality refinement. I like the 'create your own combo' concept, agreed the buffered behavior actually seems like a nice button mashing penalty. I'd say its okay to drop the older buffer objects after so many where the human memory starts bluring, say after four to six and still feel the penalty.
    36. I'm not sure what the old D3DX functions would be doing there. It looks like U8V8 is a signed integer format (DirectXTex seems to treat it as R8G8_SNORM), so perhaps it was something to with unpacking from the [0, 1] range to the [-1, 1] range. You may want to file an issue on the DirectXTex GitHub repo or see if you can contact Chuck Walbourn directly to see if he can help you out. He's open-sourced a lot of the old D3DX stuff, so he's probably the best person to ask.
    37. Hello there! I’m the creator and producer of an upcoming visual novel / video game. My team and I are looking for artists (character and background), writers (experienced in writing relatable characters and witty dialogue), and programmers (familiar with unity and creating mini games). Our team is a group of close friends looking to break the mold of the traditional visual novel and create something new and positive. This game will be highly promoted and be a great portfolio piece. Rates are negotiable! If you are interested please contact/message us today! OConQuestGame@gmail.com
    38. I was googling but couldn't really find anything related to this, so I figured i should make a diagram of my current server setup: I was curious about the mysql connectivity, because let's say the game instance servers are connected to the master mysql server. Assuming the master server is located in WA State, and someone who lives in New York connects to the New York game instance server... And when the game server drops an item (and the player loots it), the game instance will need to communicate back to WA State, then, back to the NewYork game server to tell the user the item has been successfully inserted into their inventory. Now, that's a lot of round trip time, and not fair to that player who chose a game instance server closest to their location. When a player loots an item, I can make it seem like it's inserted into their inventory (update the matrix), but I just feel like I'm doing something wrong here. Any insight/advice is appreciated
    39. Wild dog

      Hello, new here.

      Thanks for the advice.
    40. Game developers will be able to become pioneers in the development of decentralized games for the gambling industry using DAO.Casino protocol. On September 17, 2018, DAO.Casino is opening Sandbox for developers, independent teams and game development studios that choose to harness the power of the rapidly developing DApp industry. Starting today everyone may submit their application for Sandbox on the official Sandbox page. The Sandbox project is designed by DAO.Casino developers. Participants of Sandbox will learn the basics of decentralized applications development on DAO.Casino protocol. Developers participating in Sandbox will learn to create, design and deploy decentralized games and applications on Ethereum blockchain. DAO.Casino is planning to reward most active developers for their constructive feedback on the improvement and optimization of the SDK and related documentation. The company will separately announce the details of the rewards program later this fall. “We are confident that the Sandbox project will play an important role in our collaboration with studios and independent game developers. We cannot wait to see our product helping developers unleash their creative and entrepreneurial talents and apply those to one of the most groundbreaking technologies of the XXI century. — states Ilya Tarutov, CEO, DAO.Casino. – I am sure that the products we’re developing will transform the online gambling into a fair and transparent industry for all of the involved parties: casino operators, developers, and affiliate marketers. “ “We are launching the Sandbox with the goal of enabling as many developers as possible to learn to create decentralized games. We have achieved an important milestone by starting to accept applications from developers all around the world who share our idea to make online gambling fair and transparent. With our technology, developers can take the whole gambling industry to the next level” – says Alexandra Fetisova from DAO.Casino. DAO.Casino is disrupting the online gambling industry by developing the protocol based on Ethereum blockchain technology. The protocol ensures the automation of transactions and facilitates interactions between all the industry participants: casino operators, game developers, and affiliate marketers. DAO.Casino team is fully dedicated to developing the best products and making the gambling industry a better place. View full story
    41. Game developers will be able to become pioneers in the development of decentralized games for the gambling industry using DAO.Casino protocol. On September 17, 2018, DAO.Casino is opening Sandbox for developers, independent teams and game development studios that choose to harness the power of the rapidly developing DApp industry. Starting today everyone may submit their application for Sandbox on the official Sandbox page. The Sandbox project is designed by DAO.Casino developers. Participants of Sandbox will learn the basics of decentralized applications development on DAO.Casino protocol. Developers participating in Sandbox will learn to create, design and deploy decentralized games and applications on Ethereum blockchain. DAO.Casino is planning to reward most active developers for their constructive feedback on the improvement and optimization of the SDK and related documentation. The company will separately announce the details of the rewards program later this fall. “We are confident that the Sandbox project will play an important role in our collaboration with studios and independent game developers. We cannot wait to see our product helping developers unleash their creative and entrepreneurial talents and apply those to one of the most groundbreaking technologies of the XXI century. — states Ilya Tarutov, CEO, DAO.Casino. – I am sure that the products we’re developing will transform the online gambling into a fair and transparent industry for all of the involved parties: casino operators, developers, and affiliate marketers. “ “We are launching the Sandbox with the goal of enabling as many developers as possible to learn to create decentralized games. We have achieved an important milestone by starting to accept applications from developers all around the world who share our idea to make online gambling fair and transparent. With our technology, developers can take the whole gambling industry to the next level” – says Alexandra Fetisova from DAO.Casino. DAO.Casino is disrupting the online gambling industry by developing the protocol based on Ethereum blockchain technology. The protocol ensures the automation of transactions and facilitates interactions between all the industry participants: casino operators, game developers, and affiliate marketers. DAO.Casino team is fully dedicated to developing the best products and making the gambling industry a better place.
    42. Dirk Gregorius

      FBX SDK skinned animation

      In a first step I would simply export the FbxClusters and use them to deform the mesh on the CPU as I showed you in an earlier post. Once you have this working you can implement the GPU version.
    43. Maciej Mizerski

      Quaternion, why divide angle by 2?

      There is a function that takes a quaternion and makes a rotation matrix out of it. This function sends: the quaternion i to the rotation Rx(180) the quaternion j to the rotation Ry(180) the quaternion k to the rotation Rz(180) More generally this function (call it M) works like this: M( cos( t ) + i * sin( t ) ) = Rx( 2 * t ) M( cos( t ) + j * sin( t ) ) = Ry( 2 * t ) M( cos( t ) + k * sin( t ) ) = Rz( 2 * t ) Your question is why we have a "2" in the Rx( 2 * t ) (or rather your question is why the "inverse" of M has a division by 2). In my previous answer I attempted to demonstrate that you can't have anything else than 2 (like you said it is indeed a double cover). In other words one is forced to have this "2" factor because otherwise the multiplication on the quaternions would not be compatible with the multiplication on the rotation matrices. By "compatible" I mean M(q*p) = M(q)*M(p) for two quaternions q and p.
    44. The pictures and date bars are unexpected. I'd cut them. Use regular dates in the text. Cut "references on request" and the "interests" since none of those will help getting the job. Remove the skills section, incorporate those keywords in the places you've actually used them. This should reduce your resume to a single page, which is what is expected for a recent graduate.
    45. Tekksin

      My Current Game Design Project

      Thanks sir! Yes, the animations are refined in some actions, but almost all of them are stiff and will require more TLC, for sure. Since I haven't gotten everything down to the frame, I'm currently just knocking out a lot of animations, and will definitely have to go back in and refine them.
    46. mrMatrix

      FBX SDK skinned animation

      I've perhaps narrowed the problem down to not transposing the output per frame animation matricies, but I've tried combinations of each one without success. How do I know I need to transpose a particular matrix? Do I need to transpose the joint matrix * the parent matrix This is a combination of T * R interpolated matricies multiplied by the parent matrix and then multiplied by the inverse bind pose. So I have animatedxform = some combination of ParentXform * T * R * invbindpose
    47. Update -- search index is no longer processing. The page just doesn't list anything. "There are no results to show in this activity stream yet"
    48. _WeirdCat_

      Share a pointer

      I think i found it hahhah huehue Just make it a global var and don't care !:0 about any pointers to pointers Genius ; )
    49. Tom Sloper

      How to distribute pre-release game?

      Sorry, it's moved there now.
    50. I have been atempting to finish a game for years now. I never do. I always bite way too much and it ends up bittng me back and I end up quitting. To avoid this for my newest project I decided to keep it to the bare minimum I wanted. It would be a mostly 2D game made in Unity, would be using 3d for a few minor things. The game has 3 sections, battle, encounter and travel. The player has a deck, a level which theyraises by winning encounters and money to buy things, they also have reputation with various factions that may apear in events, which he gains or loses acording to their actions. Travel The player has to travel across the world for their great goal. The map would use a node system where unlocking a location reveals the path to new locations. When players reach a location they trigger an ecounter from a random pool of events. Players can return to locations. Players can move any amount of locations they want provided the location is unlocked or joined to an unlocked location. Traveling may trigger an encounter along the location path. Special locations exist that advance the story forward ( 12 diferent locations, the player must visit 3 of 10 then one of the other two will open and all others will lock.) Defeating the special location boss will grant you a pick of 2 of their cards. Enconter When the player travels things happen A Store may give you new cards for your deck that you can purchase, thieves may want to steal your thigns, etc. When an encounter happens you are faced with multiple choices to resolve it, some may depend on your stats. Encounters have results you save someone, you kill someone, you start a fight, burn a vilage down, etc. This will cause your reputation to change and rewards to be atributed acordingly. Battle When the player encounters an enemy and a fight begins the battle would work as a mix of BattleCon and Slay the Spire. You know what your enemy will use and its initiative value. You have to pick 2 cards, a Style and an Action. This would give you a certain amount of Initiative, Attack and Block as well as possible effects. Card power has dependencies on your personal stats. The chosen cards get sent to a discard pile for 2 turns, unless they posess the exaust tag, which would destroy them for the rest of the fight. Battle ends when one of the HPs reaches 0. In broad strokes this is what I was planning. What is your opinion? Am I biting too much with this one?
    51. Pilpel

      Assimp bones' relation to nodes

      What do you mean? These bones don't exist, as in no aiMesh ever refers to them. Just to be sure, I don't need the mTransformation matrix of the aiNodes anymore when doing skinning, right? Edit: I think I was wrong in the statement above actually. :p Edit2: I'll just start a new topic about that issue, hopefuly you can help me (no spam intended)
    52. Gnollrunner

      Share a pointer

      It this case you don't need to. You have a pointer in each of the instances of A to the int *p in Main. I thought that was the whole point. Also you can in fact call members of Main in class A. You just need to break things up into .h and .cpp files.
    53. mgstauff

      How to distribute pre-release game?

      Thanks. I don't see it in the "Games Business and Law" forum - should I move it there myself. Thanks, that clears things up!
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!