Jump to content
  • Advertisement
The search index is currently processing. Activity stream results may not be complete.

All Activity

This stream auto-updates     

  1. Past hour
  2. Fair enough 🙂. Just thought I'd point some of those things out though since they could still potentially work on a CPU as well, since they're not relying on hardware rasterization (or at least not nearly as much). I would also take a look at some of the recent work in raycasting into voxel grids, and/or the cool things that people have been doing with directly rendering signed distance fields. I may not be understanding the issues here, but I don't think there's anything stopping you from from doing the same "1 shader thread per SIMD lane" style vectorization that's used on GPU's. ISPC supports this model natively, with the added bonus that it's explicit about scalar vs. vector operatations.
  3. I'm not sure how helpful any of this will be (if at all), but I'll offer a couple more things. I found this: http://softimage.wiki.softimage.com/xsidocs/transforms_RotatingObjects.htm I assume this is the documentation for the software you're using, although I could be wrong about that. On this page is a section titled Setting the Rotation Order. It says that in the 'kinematics property editor' you can set the rotation order for (presumably) Euler angles, e.g. XYZ, XZY, etc. If this is in fact the documentation for the software you're using, perhaps you could look in the kinematics property editor (if you haven't already) and report what Euler-angle order you're using, as that could be relevant information. Also, in the section titled Animation and Rotation, it mentions that you can use quaternion keys. I don't know what this means exactly in the context of this particular software, but you might double check and make sure you're right that you can't export orientations in quaternion form. (The reason I mention this is that quaternions might be easier than Euler angles to convert from Softimage to UE.)
  4. Today
  5. Janooba

    Close Quarters Development: Realistic Combat AI Part I

    What method do you use to determine the likely position of an enemy? Does it just try to calculate the nearest cover from the remembered position?
  6. chatch1111

    Best place to start in gaming

    One other thing, become very comfortable with Linear Algebra, I mean comfortable enough where you can explain the topics to a child. Gotta get that fundamental understanding where the language used is irrelevant.
  7. Kevind313

    Best place to start in gaming

    Thanks for that. I'm kind of pleased with the summation of what is needed. I am spending a bit of time coding to better my skills and avoiding blueprints with Unreal and feeling it's not going to be worth the time I'm putting into it if the place I work doesn't use it. I'm working on some old school ideas and enjoying the heck out of doing that. Internships (not much pay) and relocating isn't a problem at the moment, but I see networking as the ultimate test for me. I like to work, but meeting people, getting my name out, making connections, getting the foot in the door is something that will be tough for me.
  8. Here is some code that i wrote already. It moves the given 3 Euler angles into a matrix. #include "pch.h" #include <iostream> #include <string> #include "linalg.h" using namespace linalg::aliases; using namespace std; float x,y,z; //Pre void MatrixXZY(float3 angles, float3x3& matrix); void MatrixXYZ(float3 angles, float3x3& matrix); void MatrixYXZ(float3 angles, float3x3& matrix); void MatrixYZX(float3 angles, float3x3& matrix); void MatrixZYX(float3 angles, float3x3& matrix); void MatrixZXY(float3 angles, float3x3& matrix); void PrintMatrix(string name, float3 angles, float3x3& matrix); void MatrixDecomposeYXZ(float3x3& matrix, float3& angles); int main() { float3 AnglesIn = { 0, 0, 0 }; float3 AnglesOut; float3x3 Matrix; // Matrix [Spalte][Zeile] cout << "-----------------------------" << endl; cout << "Input" << endl; cout << AnglesIn[0] << " " << AnglesIn[1] << " " << AnglesIn[2] << " " << endl; cout << "-----------------------------" << endl << endl; MatrixXZY(AnglesIn, Matrix); PrintMatrix("XZY", AnglesIn, Matrix); MatrixXYZ(AnglesIn, Matrix); PrintMatrix("XYZ", AnglesIn, Matrix); MatrixYXZ(AnglesIn, Matrix); PrintMatrix("YXZ", AnglesIn, Matrix); MatrixDecomposeYXZ(Matrix, AnglesOut); cout << "-----------------------------" << endl; cout << AnglesOut.x << " " << AnglesOut.y << " " << AnglesOut.z << " " << endl; cout << "-----------------------------" << endl << endl; MatrixYZX(AnglesIn, Matrix); PrintMatrix("YZX", AnglesIn, Matrix); MatrixZYX(AnglesIn, Matrix); PrintMatrix("ZYX", AnglesIn, Matrix); MatrixZXY(AnglesIn, Matrix); PrintMatrix("ZXY", AnglesIn, Matrix); } void MatrixXZY(float3 angles, float3x3& matrix) { float cosX = cosf(angles.x); // X float sinX = sinf(angles.x); float cosY = cosf(angles.y); // Y float sinY = sinf(angles.y); float cosZ = cosf(angles.z); // Z float sinZ = sinf(angles.z); matrix[0][0] = cosZ * cosY; // Spalte 1 matrix[0][1] = sinX * sinY + cosX * cosY * sinZ; matrix[0][2] = cosY * sinX * sinZ - cosX * sinY; matrix[1][0] = -sinZ; // Spalte 2 matrix[1][1] = cosX * cosZ; matrix[1][2] = cosZ * sinX; matrix[2][0] = cosZ * sinY; // Spalte 3 matrix[2][1] = cosX * sinZ * sinY - cosY * sinX; matrix[2][2] = cosX * cosY + sinX * sinZ * sinY; } void MatrixXYZ(float3 angles, float3x3& matrix) { float cosX = cosf(angles.x); // X float sinX = sinf(angles.x); float cosY = cosf(angles.y); // Y float sinY = sinf(angles.y); float cosZ = cosf(angles.z); // Z float sinZ = sinf(angles.z); matrix[0][0] = cosY * cosZ; // Spalte 1 matrix[0][1] = cosX * sinZ + cosZ * sinX * sinY; matrix[0][2] = sinX * sinZ - cosX * cosZ * sinY; matrix[1][0] = -cosY * sinZ; // Spalte 2 matrix[1][1] = cosX * cosZ - sinX * sinY * sinZ; matrix[1][2] = cosZ * sinX + cosX * sinY * sinZ; matrix[2][0] = sinY; // Spalte 3 matrix[2][1] = -cosY * sinX; matrix[2][2] = cosX * cosY; } void MatrixYXZ(float3 angles, float3x3& matrix) { float cosX = cosf(angles.x); // X float sinX = sinf(angles.x); float cosY = cosf(angles.y); // Y float sinY = sinf(angles.y); float cosZ = cosf(angles.z); // Z float sinZ = sinf(angles.z); matrix[0][0] = cosY * cosZ + sinY * sinX * sinZ; // Spalte 1 matrix[0][1] = cosX * sinZ; matrix[0][2] = cosY * sinX * sinZ - cosZ * sinY; matrix[1][0] = cosZ * sinY * sinX - cosY * sinZ; // Spalte 2 matrix[1][1] = cosX * cosZ; matrix[1][2] = cosY * cosZ * sinX + sinY * sinZ; matrix[2][0] = cosX * sinY; // Spalte 3 matrix[2][1] = -sinX; matrix[2][2] = cosY * cosX; } void MatrixYZX(float3 angles, float3x3& matrix) { float cosX = cosf(angles.x); // X float sinX = sinf(angles.x); float cosY = cosf(angles.y); // Y float sinY = sinf(angles.y); float cosZ = cosf(angles.z); // Z float sinZ = sinf(angles.z); matrix[0][0] = cosY * cosZ; // Spalte 1 matrix[0][1] = sinZ; matrix[0][2] = -cosZ * sinY; matrix[1][0] = sinY * sinX - cosY * cosX * sinZ; // Spalte 2 matrix[1][1] = cosZ * cosX; matrix[1][2] = cosY * sinX + cosX * sinY * sinZ; matrix[2][0] = cosX * sinY + cosY * sinZ * sinX; // Spalte 3 matrix[2][1] = -cosZ * sinX; matrix[2][2] = cosY * cosX - sinY * sinZ * sinX; } void MatrixZYX(float3 angles, float3x3& matrix) { float cosX = cosf(angles.x); // X float sinX = sinf(angles.x); float cosY = cosf(angles.y); // Y float sinY = sinf(angles.y); float cosZ = cosf(angles.z); // Z float sinZ = sinf(angles.z); matrix[0][0] = cosZ * cosY; // Spalte 1 matrix[0][1] = cosY * sinZ; matrix[0][2] = -sinY; matrix[1][0] = cosZ * sinY * sinX - cosX * sinZ; // Spalte 2 matrix[1][1] = cosZ * cosX + sinZ * sinY * sinX; matrix[1][2] = cosY * sinX; matrix[2][0] = sinZ * sinX + cosZ * cosX * sinY; // Spalte 3 matrix[2][1] = cosX * sinZ * sinY - cosZ * sinX; matrix[2][2] = cosY * cosX; } void MatrixZXY(float3 angles, float3x3& matrix) { float cosX = cosf(angles.x); // X float sinX = sinf(angles.x); float cosY = cosf(angles.y); // Y float sinY = sinf(angles.y); float cosZ = cosf(angles.z); // Z float sinZ = sinf(angles.z); matrix[0][0] = cosZ * cosY - sinZ * sinX * sinY; // Spalte 1 matrix[0][1] = cosY * sinZ + cosZ * sinX * sinY; matrix[0][2] = -cosX * sinY; matrix[1][0] = -cosX * sinZ; // Spalte 2 matrix[1][1] = cosZ * cosX; matrix[1][2] = sinX; matrix[2][0] = cosZ * sinY + cosY * sinZ * sinX; // Spalte 3 matrix[2][1] = sinZ * sinY - cosZ * cosY * sinX; matrix[2][2] = cosX * cosY; } void PrintMatrix(string name, float3 angles, float3x3& matrix) { cout << "-----------------------------" << endl; cout << name << "-Matrix" << endl; cout << "-----------------------------" << endl; cout << matrix[0][0] << " " << matrix[1][0] << " " << matrix[2][0] << " " << endl; cout << matrix[0][1] << " " << matrix[1][1] << " " << matrix[2][1] << " " << endl; cout << matrix[0][2] << " " << matrix[1][2] << " " << matrix[2][2] << " " << endl; cout << "-----------------------------" << endl << endl << endl; } void MatrixDecomposeYXZ(float3x3& matrix, float3& angles) { angles.x = asinf(-matrix[2][1]); // X if (cosf(angles.x) > 0.0001) // Not at poles X { angles.y = atan2f(matrix[2][0], matrix[2][2]); // Y angles.z = atan2f(matrix[0][1], matrix[1][1]); // Z } else { angles.y = 0.0f; // Y angles.z = atan2f(-matrix[1][0], matrix[0][0]); // Z } } Okay. Thank you. Unfortunatly i will have to go with Euler angles. @JohnnyCode mentioned affine transformations and alignment transformations. I will look into that. I guess i have to really learn this stuff to succeed here.
  9. I understand that modeling programs and other types of editors generally use Euler angles. I just mentioned export options because it seems possible that some modeling programs might offer alternatives (such as quaternions) for export purposes.
  10. ACE Team

    Postmortem: SolSeraph

    Many times after the development of a game, at ACE we produce short videos to show early implementations of the titles we launch. For those interested in game development, here is a brief video showing some early concepts for SolSeraph. --- Follow ACE Team: ACE Team website Steam group Discord Reddit Twitter Facebook "ACE Team fans" Facebook page YouTube Twitch Player me Tumblr Instagram Minds Gab ВКонтакте
  11. ricvalerio

    Online RPG

    Follow me on the journey of creating an MMORPG. Along the way, I will share my experiences, implementation choices, techniques, decisions, tips and tricks, until the release.
  12. ricvalerio

    How I am making an MMORPG

    Hi fellow devs. I am doing a video devlog of my journey doing an MMORPG, and along the way, I am sharing my progress, tips, tricks and techniques. I will also be posting tutorials on some aspects of the development, like from example client-server networking, leveraging scripting, creating tools, and a lot more. If you like these topics, make sure to take a look at my channel and subscribe, and I will see you in the next video. https://www.youtube.com/channel/UCyOt8sPTqNxRseUzpzUEQQg
  13. Thanks for your answer. How would such calculations/transformations look like? Iam 100% new to this topic and i dont have a clue what to do. If someone could just point me into the right direction i could find out myself maybe. Euler Angles -> Matrix -> Matrix Operations? -> Back to Euler
  14. You will need alignment transformation, not sure that fitting UE4 will be an affine transformation though- if handedness will not sit in tact after you rotate Y to Z. You may need inverse scale by handedness axis then, applied as last in the transformation.
  15. This isn't too hard in the remake, and can be done with the editor. But lod comes into play and things stop rendering that far zoomed out... Just play supreme Commander instead, i guess.
  16. Up until recently, I was convinced that using pixel art was the most suitable for this project. Aside from it giving you a unique feel, it also has qualities that a more modern render just cannot compete with: It has that special magic to it, which is really hard to beat. Furthermore, I would avert from using super cartoonish, stylized characters, as they would simply not fit the theme. Or use super grungy art for that matter. [We've seen way too many of them so far.] But I wouldn't want to fall into the trap of becoming just another generic, isometric game on the market. That is why I made this small mock-up, to see the difference and help me decide on which to choose from--sort of. For some reason, I get this notion that I should change my mind, and go with a super modern (high detail) look, and not worry about it too much. Instead, the characters, the scenes, animation and all the other assets should be carefully curated, and only worry about that it stays visually attractive, unique and stays within the limits of the said vision. [Using deeper color palettes, and darker scenes.]
  17. theaaronstory


    A classic ARPG concept, built upon the legacy of the good-old Diablo 2. Hopefully, one day it will see the daylight!
  18. Many people are grabbed by TDD due to its apparent simplicity, and quick feedback. However, it's mostly a false impression in my opinion, it's already impossible to fully test a single 64 bit addition, let alone if you actually do something in the code. You may want to read https://rbcs-us.com/documents/Why-Most-Unit-Testing-is-Waste.pdf As for your question, how are you going to code anything with "unknown condition and states"? I think that's impossible. As such, you may be looking at the wrong point for testing, shouldn't you test where you at least know what it is supposed to do?
  19. grelf

    Weird circular orbit problem

    The trouble with integration methods for predicting the path of an object is that eventually errors increase to the point where no faith can be had in the results. In 1987 Bretagnon and Francou, of the Bureau des Longitudes in Paris took a different approach and produced a method called VSOP87 which enables the heliocentric coordinates of all the major planets to be calculated from long series of terms. As I understand it they did harmonic analysis of historically long series of observations, effectively producing something akin to Fourier series for the calculations. Jean Meeus' book "Astronomical Algorithms" explains much more about this, giving the algorithm and discussing accuracy. He includes all the necessary data as an appendix to the book. See https://www.willbell.com/math/mc1.htm I obtained the book in 2010 and implemented the algorithm for all major planets for a certain web site. I originally wrote it in Java for client-side applets but when Oracle ceased to keep Java secure enough in browsers, I converted it all to server-side PHP (yuk!). The original paper is referenced in Jean's book: P.Bretagnon, G.Francou, "Planetary theories in rectangular and spherical variables. VSOP87 solutions", Astronomy and Astrophysics, Vol. 202, pp 309-315 (1988). Searching today I discovered that Jean's book is available online as a PDF (488 pages) from http://www.agopax.it/Libri_astronomia/pdf/Astronomical Algorithms.pdf Thanks for pointing me to MathPages.com - that looks excellent.
  20. Just the terrain rendering? Do you need a virtual camera and movement? Do you have a data format in mind? How much are you willing to pay?
  21. Shaarigan

    An Artist Trying to Program

    I'm a little bit more selfish and do what I do because I like it to do and I always can't wait to see/play the result as my best customer and strictest reviewer
  22. Self-publishing is great as a side hustle, but if you quit your job to try to make a living from it you are going to starve. Especially with such a niche product. Do some basic math involving your yearly expenses vs the overhead of producing your product and balanced by expected income. Expect sales to number in the hundreds because the actual market for such a thing is vanishingly low. Do the same for future releases, because you absolutely can not expect to coast off the proceeds of a single product forever. I once read a blog post by an independent author who estimated that if he can build a core group of 5000 fans, who dedicatedly buy everything he produces on a two-year basis, he could almost match what he gave up by quitting his job. You should try to do the same kind of calculation. Be very pessimistic in your estimation of market size.
  23. Cody.Rauh

    An Artist Trying to Program

    Honestly, I couldn't even give you the definition of the first three things you listed without having to go google it, and I was always terrible at math. That said, I am a big believer in doing what you can with what you have at the moment, and building your capability each day by learning all the above you mentioned, and more importantly learning to love the process by seeing the value in each component required to do the activity as a whole. Its a process, or is it a method, maybe a function? ( joking ) I agree with you on so many points! I spent the last 13+ years getting better at art, and depending on who you ask on what day someone would say 13 years? This guy sucks. Which while not the most actionable feedback has a truth to it that we all have room to improve every day. I imagine even programming every day as I have been if done for 13 years would likely yield a similar result. Art like coding has its own snobbery, I think this is true of anything, and it is made worse by 95% of people in the world looking at someone and saying I can do that! While they have the potential they often don't realize all the work that goes into it. The only problem I ever have is being grouped in that category, something honestly I have had to get over, cause 99.99% of people don't know you, and it isn't personal it is just what people are used to dealing with. I do wish people would ask vs. assume, but you can want in one hand and ______ in the other and see which fills up faster. Another thing is most are in it to get rich, and many of us with experience know it would be easier to buy a lottery ticket and win than make a "successful game", plus you wouldn't have to invest 5, 10, or even 20 years of your life. I myself am aiming for social impact and culture change instead of money, and that may be an even harder fought goal. Never claimed to be sane, lol.
  24. Evgeny  Ryabovol

    What feelings does this soundtrack make you?

    Hi guys, it's just amazing! I did not expect such a strong and varied reactions. It even seemed to me that some of you are just experienced screenwriters! This is just great! It seems to me that with just a short soundtrack, it is enough to create a plot for a small film or a game episode. All of you guys are awesome! A little reflection on each of the answers, we can say that you all described something similar. It's like the core of an emotional lump described from different angles and it's incredible. Thank you so much to all of you guys! I'm very pleased that you enjoyed my work. Looking forward to a new visions All the best wishes, Evgeny
  25. QwePek

    Algorithm Perlin Worms

    Hello, I want to make a game where i can procedurally generate caves. I found out that the best way to create this caves for me is by algorithm Perlin Worms, but I'm having problems with understanding it. Could someone explain how it works or write some code examples (best in SFML). Thanks
  26. Maybe that paper will help you to more easily write CPU shaders that compile to SIMD: https://software.intel.com/en-us/articles/easy-simd-through-wrappers
  27. The main draw-back is that all shaders must be hand-coded using SIMD vectorization, preferrably as separate full-screen passes. However, the engine comes with a hardware abstraction layer for SIMD and tries to stay within the SSE-NEON intersection. This is why LLVM OpenGL implementations cannot be optimal on the CPU, because vectorizing is difficult for compilers when only some shaders can be efficiently vectorized.
  1. Load more activity
  • 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!