Jump to content
    1. Today
    2. @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
    3. 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.
    4. *** 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.
    5. 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
    6. 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.
    7. 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; void Compute(float* pointsx, float* pointsy, float* points, float* velx, float* vely, long pcount, float aspect, float zoom) { #pragma omp parallel for for (auto i = 0; i < pcount; ++i) { auto fx = 0.0F; auto fy = 0.0F; for (auto j = i + 1; j < pcount; ++j) { const auto dx = pointsx[i] - pointsx[j]; const auto dy = pointsy[i] - pointsy[j]; //if(px != px) continue; //most efficient way to avoid a NaN failure const auto f = G / (dx * dx + dy * dy); fx += dx * f; fy += dy * f; } for (auto k = 0; k < i; ++k) { const auto dx = pointsx[i] - pointsx[k]; const auto dy = pointsy[i] - pointsy[k]; //if (px != px) continue; const auto f = G / (dx * dx + dy * dy); fx += dx * f; fy += dy * f; } pointsx[i] += velx[i] -= fx; pointsy[i] += vely[i] -= fy; if (zoom != 1) { //replacing this with a direct assignment as below does not help 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){ var r = new Random(); for(var i = 0; i < Startcount; ++i) { retry: pointsx[i] = (float)(r.NextDouble() * 2.0F - 1.0F); pointsy[i] = (float)(r.NextDouble() * 2.0F - 1.0F); if(Math.Sqrt(pointsx[i]*pointsx[i] + pointsy[i]*pointsy[i]) > 1.0F) goto retry; velx[i] = vely[i] = 0.0F; } pcount = Startcount; buffersize = (IntPtr)(pcount*8); updatepcount = true; reset = false; } are.WaitOne(); NativeMethods.Compute(pointsx, pointsy, points0, velx, vely, pcount, aspect, zoom); var pointstemp = points0; points0 = points1; points1 = pointstemp; are1.Set(); } } protected override void OnRenderFrame(FrameEventArgs e){ if(updatepcount){ Title = pcount.ToString(); updatepcount = false; } 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: 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.
    8. 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
    9. 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,"
    10. 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.
    11. 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!
    12. 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.
    13. 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.
    14. 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.
    15. 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
    16. 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
    17. Wild dog

      Hello, new here.

      Thanks for the advice.
    18. 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
    19. 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.
    20. 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.
    21. 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.
    22. 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.
    23. 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.
    24. 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
    25. 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"
    26. _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 ; )
    27. Tom Sloper

      How to distribute pre-release game?

      Sorry, it's moved there now.
    28. 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?
    29. 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)
    30. 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.
    31. 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!
    32. AtomicWinter

      Assimp bones' relation to nodes

      I noticed this, "i think assimp discards any bone nodes that are not being used by the mesh in question (i.e. have zero weight). Hence the discrepancy between the full skeleton, and the aiBone list for the mesh." Could that be the case here? Are you positive those bones are being used by the mesh? Here is where I got that from: https://github.com/assimp/assimp/issues/1787
    33. _WeirdCat_

      Share a pointer

      as for that conversion thing i dont know yet, but for the post above, i cant call main class from a subclass due to circular reference thing, i could obviously bypass that, but thats not the point, still searching for legit solution, i want to change the pointer in main class from the subclass itself which has a pointer to that mainclass pointer which is 0 at start and (*face_model) = aface_model; cracks the app where face_model is model3f ** and aface_model is model3f * that is set to 0 And yesterday i thought that was an easy to solve problem lol
    34. Karzan

      tilting screen in unity

      Hello Kamal, I dont know much about developing for Android with unity but I have some experience with native Android development. What you want is to utilize the Accelerometer of the device, a quick search lead me to this video which should help you. It is quite simple. https://unity3d.com/pt/learn/tutorials/topics/mobile-touch/accelerometer-input
    35. Gnollrunner

      Share a pointer

      Well just add a level of de-referencing and you would get: #include <iostream> struct A { int **p; A(int **ap) { p = ap; } }; struct Main { int* p; A member1, member2; Main() : p(0), member1(&p), member2(&p) { } void SetVal(int *pVal) { p = pVal; } }; int main() { Main clMain; int *pVal1 = new int(666); clMain.SetVal(pVal1); std::cout << "member1 value = " << **clMain.member1.p << std::endl; std::cout << "member2 value = " << **clMain.member2.p << std::endl << std::endl; int *pVal2 = new int(444); clMain.SetVal(pVal2); std::cout << "member1 value = " << **clMain.member1.p << std::endl; std::cout << "member2 value = " << **clMain.member2.p << std::endl; delete pVal1; delete pVal2; return 0; } You can and probably should use smart pointers for this. However I loath the C++ standard library shared_ptr because it creates extra objects you woudn't need if you simply implement a reference counted object base class. This can cause a major performance hit.
    36. mr_tawan

      Share a pointer

      What about using conversion ? https://en.cppreference.com/w/cpp/language/cast_operator
    37. Pilpel

      Assimp bones' relation to nodes

      So what's the deal with the nodes that don't have corresponding bones?
    38. Kamal Wafi

      tilting screen in unity

      Hi there, i recently start learning unity and im working in my first game , I was wondering if unity had functions to support the motion control effect (tilting screen to move character) you see in doodle jump (which is 2d game) ? If it exists, what are they called? and how it works ? Thanks
    39. GWDev

      Hello, new here.

      Hi Wild dog, depending on your knowledge of Python you could start by making some small games without any graphics or pick a game engine / framework with python support. Pygame and Panda3D come to mind, but there are probably a lot more available. Blender had a python game engine, but removed it with version 2.8. Just pick one that's still maintained and has a good documentation / tutorials. Start with a small game and if you have questions, you can ask them here and people will be able to help you.
    40. I've never heard it called that, but yes, that seems roughly equivalent to an Entity/Component system.
    41. _WeirdCat_

      Share a pointer

      Well, welll.... hmmm............. Not to mention i cant properly edit my post above so ill leave it like it is now... But subclass wont be derived from mainclass, thats not going to happen, i only made an example which is not the exact tthing i have if you really need to know main class is TMainFramework class which is of class TGLForm which is of class TVCLComponent which is of class TPhysicalElement<float, float, float, float, float> And it stores a list of forms 6 side projection forms and one perspective projection forms which are the type of TGLForm which is of type of... and so on so its irrevelant. Anyway in main class i used an int * p; description which is actually model3f * face_model; anyway this doesnt matter Since i would like to create a pointer in main class from the subclass i call it So if subclass has int ** p; And during initialization (in subclass space) i call (*subclass.p) = mainclass.p; Where before anything happens like initialization mainclass int * p is set to be 0. I would rather want to stay like it is unless i will have no chocie and have to change it. So (*subclass.p) = mainclass.p; for me it seems like i dereference an unknown address and try to make it 0; However in some other subclass code i would like to do something like (*p) = new int();//new model3f(); So int * p in main class points to that newly created var, And int **p in that other subclass point to int * p from main class which is now not a 0 butnsomething created.. i hope i described that
    42. @cosmopath Clicking on GDNet chat redirects me to the same page as Community->Chat. From here you need to click discord link and it opens a new tab (requesting login/password). I've never been on Discord here yet, as I personally don't like that software. It may actually behave a bit differently if you have Discord desktop software installed - it may just add you GameDev channel (or ask in browser whether you want to run Discord desktop software). Off Topic: Is that CC in your profile pic?
    43. One more thing: in your test, did all of your pawns calculate a path at the same time? And then all of them updated their paths at the same time after 2 seconds? This is usually not the way it will work in-game. Different pawns will move at different times, so you will have less path calculations at the same time than you have pawns.
    44. 1024

      Assimp bones' relation to nodes

      I don't have code around so I can't tell you for sure, but I believe that for each aiBone there is an aiNode with the same name. An aiNode has a parent and children, so you would need to match bones with nodes and then you can traverse the skeleton through the nodes (and get the corresponding bones from the nodes).
    45. I might be interested. I will be somewhat off until 2nd October (as I noted the internet here may be the problem) - as I'm on holiday (and average hotel connection is not really something you can use to setup a call). As long as the above isn't a problem I'd prefer to stay on VFX side - as I enjoy that kind of work (I'd have just one condition - that some effects could make it here on GameDev in form of an article).
    46. I noticed that when importing animated meshes, the total number of bones (aiBone) in the scene might be less than the total number of nodes (aiNode), so my initial thought was "okay their hierarchies are probably not related.. whatever", but then I noticed that an aiBone object doesn't contain a pointer to a parent bone. So my question is how do I calculate the final matrix palette for the bones, not knowing the hierarchy between them? Edit: I forgot to mention that according to some book I read every joint (bone) must store an index to its parent joint.
    47. stealth1997

      Video game soundtrack

      Hi there! We are an independent heavy metal band and we are working on 2 new songs that we would propose as soundtrack for a video game. A demo version of one of the songs is attached If interested please do get in touch here or at info@stealthattack.it and let us know. mixdown demo 4 del 22_8.mp3
    48. Gnollrunner

      Share a pointer

      First it's always very helpful when you indent your code. You can use the code box button <> to help you out. Second subclass usually means a derived class. So for instance: class A { ...... }; class B : public A { ..... }; So here B is a subclass of A. What you have are two instances of class A which are members of class Main. Of course you can name them subclass1 and subclass2 if you want but there is probably a better choice of names. Finally, I'm not sure where you intend to put the actual integer. All I can see is pointers to integers. You could put the integer in Main itself, like this: struct A { int* p; void init(int * ap) { p = ap; } }; struct Main { int iInt; A subclass1, subclass2; void init() { subclass1.init(&iInt); subclass2.init(&iInt); } }; Now you can actually have a place for your number. Also you might want to use constructors instead of init functions. Sometimes init functions come in handy in odd cases but here you really don't need them. So that gives us: #include <iostream> struct A { int* p; A(int * ap) { p = ap; } }; struct Main { int iInt; A member1, member2; Main(int iVal) : iInt(iVal), member1(&iInt), member2(&iInt) { } }; int main() { Main clMain(666); std::cout << "member1 value = " << *clMain.member1.p << std::endl; std::cout << "member2 value = " << *clMain.member2.p << std::endl << std::endl; clMain.iInt = 444; std::cout << "member1 value = " << *clMain.member1.p << std::endl; std::cout << "member2 value = " << *clMain.member2.p << std::endl; return 0; } Which outputs: member1 value = 666 member2 value = 666 member1 value = 444 member2 value = 444 I'm not really commenting your design here. There might be some better way of doing what you are trying to do.
    49. I'm sure some AI specialists will chime in but some typical things you might want to look at are: spreading the path calculation over multiple frames hierarchical path finding sharing routes between units reusing path information if several are trying to get to the same goal To go further on the FPS not being a good measure, what you also want to avoid is 'frame spikes' where one frame takes a lot longer to complete than others, causing a dropped frame. This can often cause problems with things like AI, where you have a decent frame rate but you get stutters when particular frames do lots of calculations.
    50. 1024

      Hello, new here.

      Hello, you have to ask specific questions to get answers. Just saying "can you help me" is not enough.
    51. Wild dog

      Hello, new here.

      Im excited to learn Game development,but Im learning Python at the moment. Anyway you can help me out
  • 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!