Jump to content
  • Advertisement
    1. Past hour
    2. Hey guys, Sounds like a fun idea, I could actually fill in both of those positions, I'm looking for a side project to do to break up work a little bit (I work as a 3D animator), and this looks like a fun project to be in! My online website (I've also attached my 2D portfolio as well) : https://www.artstation.com/insigma Unfortunately I don't really have any finished writing stuff that I can show you, they all exists within pitch documents and unfinished game productions. But I'd be more than happy to do some sort of a writing test if that suits you guys? Let me know! Contact me on: jcpunkhead@gmail.com Cheers, Jackie Jackie_Cai_Portfolio_2019.pdf
    3. Hi! I am sound designer and foley artist, currently on BSc in Audio and Recording Tech. If you are looking for and audio person I would love to help you with the project. The link to my portfolio is in my profile / signature
    4. Today
    5. To me, language has very little to do with this but rather this sort of hierarchy becomes a facet of the single responsibility principle. The keyframe should do what its name implies - store information about some properties. It is owned by the track, whose responsibility is to store some duration and a number of keyframes. Hence the track should remove or add keyframes. Copying keyframes from one track to another should be done by whatever structure you have that manages the tracks. If your keyframe has access to/knowledge of the track, the two become interdependent, which unnecessarily complicates the entire architecture.
    6. Green_Baron

      Game initialization.

      Correct me if i am wrong because i am not an expert, but this is only the case if they where actually constructed in a specific run, right ? I mean, it may be the case that a piece of code declaring a static variable (edit: outside of main) might not be executed because it was never reached. But if it was executed, then the static stuff will live until the program terminates. Correct ?
    7. a light breeze

      Game initialization.

      Um, yes it does. In C++, static variables guaranteed to survive past the end of main. That is how the language works, and there's nothing you can do about it. You might be thinking about cases where you set the static variable to some harmless dummy value, such as nullptr for pointers, at the end of main. You can of course do that, but that doesn't change the essential fact that the variable itself has a lifetime that extends beyond main. It also requires knowing where all of your static variables are, which can break encapsulation and/or require writing extra boiler-plate code, especially for function-static variables.
    8. In this episode of Madsen's Musings, I discuss creating exposure and building your personal brand within the industry. Wanna learn more about me or my work? Go here: https://madsenstudios.com/ Subscribe to my YouTube channel or follow me here on GameDev.net to see all the latest updates. A transcript is provided below the video. Alright guys, so we're gonna try a vlog really quickly in my studio. I'm here, I was just answering a really good question... (By the way, I have a very noisy... there's the camera, I forgot where to look... sorry, so I have a very noisy studio chair, very squeaky... ah well, it was really cheap, was like $89, but...) There was a really good question: "Besides of course composing and producing music, and the projects you've been hired to do, what else do you do that gives you more visibility in the job market as a professional. What's worked best for you". Alright. This was on GameDev.net in the Music & Sound forum, which I am very humble and glad to be moderating. I've done that for the last nine years now. Ok, so my answer. I'll just read this out to you guys. So it's all about the slow burn, You have to avoid the temptation, the desire to have a sudden explosion of exposure on the internet. You instead want to do just a lot of movements. It's just kind of like working with compression, EQ. A lot of small movements over multiple tracks will give you a better sound than like just smashing and doing a ten-to-one ratio. That type of deal. So approach this with small movements, because that's going to be more attainable, you're going to be able to chip away at that better than just saying I'm going to take on this massive thing. I just ticked off -- let me count how many: one, two, three, four, five, six -- six things I'm going to quickly talk to you about as fast as I can. Try to be active in the industry. I interact with other artists and developers. This could be graphic designers, this could be animators, this could be devs who are making game engines, that type of thing. So yeah, I do this mainly on Twitter. I follow a whole bunch of people on Twitter that are making games. And so I'll see people post like "here's my new animation for the spell, or this movement/my character", "here's the new 3d environment", "here's this", I even follow other composers and sound "here's my music for that", and I will often write "hey I really like this", "hey, this is great", and it's very inspiring to me to see other people's work. What's really cool about this is it's not stuff I'm tied to; it's not stuff that I'm like "I'm taking part in this", so it's just me being a part of the industry I'm in. That's a huge part. I also attend conferences and local meetups when I can. Now, GDC is one of the biggest ones, I've gone to that one nine times I think -- maybe eight times. Anyway, I'm not going this year for a lot of different reasons, one of the main reasons being the house purchase that we just did, so it's a little bit crazy time. I'm going to be staying here in Austin and working on the house move, but I've gone to conferences a lot. Now GDC what it does -- when you go to GDC, you show your face there. First off, people get face time with you. You're giving people time to experience you as a person, directly. They get to know your personality, your mannerisms, hopefully, you can create some relationships there. The other thing is, everyone knows GDC is expensive. So unless you're going with a company shirt, saying "SGI" or "Netta" or whatever, unless you're going with something that paid your way, they know that you invested a lot of money, and you're investing your time, to go out there. It's kind of a hassle to travel to San Francisco and get a hotel. It's really expensive and then go to the conference. It's a lot of fun, but it's a lot of investment. A lot of energy and money is put into that, and so they recognise that and can respect that, and so that's something that helps distinguish you from someone who's just on a website saying "hey, I think you should hire me". If someone knows you spent time and effort to go out there and interact directly with folks that's gonna speak louder. If you want to focus on local parts, there's all kinds of things you can do. There's meetups. There's a sound designer meetup for beer -- I like beer -- it's like once every quarter or whatever. I need to do one; I haven't done one since moving back to Austin, but when I lived here before I went to a couple. Lots of fun. I enjoyed meeting the other audio professionals and having some beer. Do those, do game jams. Just take part: be active. Now you want to focus on your branding and your marketing. Now this is kind of one that's going to hit people square in the forehead. I'm guilty of this too, but I cannot tell you how many times I've seen particular people copy and paste the same exact post they did two weeks ago, again in some Facebook group or whatever. That's a big no-no. The reason being is because people will just generally recognise "oh I've seen this guy's post. The same wording as last time" and they'll skip over it. You need to just be really careful about that. You know marketing and branding is highly volatile. People will skip over something they've seen before in favour of something that's new, different, shinier. So how do you know where the market's trending? Go back to my first points about being very active in the industry, going to conferences, going to local meetups, just knowing what people are doing. Having a pulse on it. That's gonna take some effort, that's gonna take some time. This would be the fourth one. Know your skill set, and focus on that. You want to continue to grow, right? I like the idea of being a lifetime student, a life long student, just always growing, always learning. I'm growing. I'm trying to learn new instruments, trying to learn new approaches, new instruments, and new technologies, so I'm always in favour of being a lifetime or life long student, but you also want to know: where is the sweet spot for you. Is your sweet spot orchestral and sweet anime sounding kind of music, is your sweet spot jazz and rock, is it hip-hop and electronic? What is it you do really really well, that you really enjoy. Problems that you really like and have a natural aptitude for solving. Those are ones you really want to go for. Put stuff out often. With NDAs, things like that, you can have situations where maybe you're working on a project that's multiple years and it's gonna take you a long time to be able to share that music publicly. That's a bummer, but that happens. So what can you do to get around that? Well first off, you can go back to older projects you've done before that you've shared and say "hey" and you can just put it out there again. I did this recently with a project, where I had written music about a year and a half ago, and I was really proud of the buildup at the end of that track, and so I shared again saying "I'm still very proud of this". It was not a new project, it didn't get a tonne of exposure the first time, and I did that in the hopes to one) fill in some dead space when I'm waiting for other things to become public and live so I can legally share them, and then two) just give that more attention. Bring it back into focus. Maybe someone else who missed it before will see it this time, or maybe someone who saw it before will be reminded, be like "oh, that's right, I remember that. I liked that" and then maybe they'll reach out to me. Here's number six: Give back. I have these vlogs, I'm trying to do this just to give input and give advice, and my personal journey to you guys and gals, in hopes that it's gonna inspire and give you guys some motivation, give you guys some guidance, that type of deal. It motivates me too. I talked a while back -- this was a Facebook Live post, so you won't see it on YouTube -- where I was doing a whole bunch of mentoring, and I described that it's surprising at first, but when you mentor someone, a lot of people think it's going to go from the top down; from the mentor to the mentee. But if you're in a good relationship, in a good situation, very often the mentee can inspire the mentor. And so it's reciprocal, it goes back and forth. Yes, you're pouring into the person that you're teaching, helping, guiding, but they're also inspiring you with their energy, their fresh ideas and fresh outlook on things. It can go back and forth. So I'm a strong advocate of giving back as best you can. I think that's about it. So to recap: Be active in the industry, and stuff that isn't directly you. Don't make it only about you, but take part. And not only about audio. Make it something that's not your discipline. I love the writing in this game. I love the art direction in that game. I love the battle system in this game. By the way, the subtext of that first little bit was "are you playing games?" I mean if you're working in the game industry and you're not playing any games at all you're kind of missing the point. Attend conferences both on the global scale and on the local scale as much as you can. Interface with people directly. Get them to have face time with you directly. It makes a huge impact. Focus on your branding and your marketing. What are you doing? Are you adapting, or are you doing the same stale post over and over again? Know your skill set and focus on that, while on the side keep growing and learning. Put stuff out often. Be just engaging. And then finally, give back to the community in what ways you can. Ok, so I hope that helps. If you like these videos please like, subscribe, comment, share. [Parting remarks]
    9. Tom Sloper

      Best places to "market" my VR game

      Marketing question. Moving to Business forum. See some of the other marketing threads on this forum.
    10. Seeking a game writer for a VR game. Need free work during the initial demo phase for a publisher or Kick Starter presentation to seek funding. The position will become paid, post funding. Will need to sign NDA for final plot characteristics. We will only build the game if there is funding to support that. Applicants Please should include A short story Links/references to previously completed writings or training. Any other abilities that will help/support a game dev team. Send it to Game.Dev@Live.com Short story parameters: Someone is solving a puzzle box. Why? How did it start? 500-1000 words DO NOT FINISH the story, leave it a mystery. Make me wish I had the rest of the story. 1st person perspective, can use narrator to provide outsider knowledge. Something about the puzzle box disobeys known physics. Could be magic, or sci-fi, but you don't need to explain it. NOT HORROR. Exceptions of Cerebral Horror. The game is intended to be a mind bender. NO CONCEPT ART, NO PLOT POINTS. There are key elements behind the NDA that will undoubtedly change these. TEAM: Dan Violet Sagmiller - Industry Vet, published author on Unity/AI, MVP, advanced speaker Nick A. - Senior Programmer ????? - Writer Xtrodinaire ????? - Modeller/Artist ????? - Audio Designer ????? - Level/Puzzle Designer (3D) ????? - Lighting/Effects Engineer.
    11. Zakwayda

      Quaternion to Euler very imprecise

      I'll repeat myself and say that I'm skeptical that Euler-angle conversions are handedness-aware. I just mention this in case you're somehow confusing handedness with axis order (which would be easy to do, since both of these conventions can vary from source to source). As an exercise, it might be interesting to try writing left- and right-handed versions of the same conversion function and see how they differ. That might provide some insight as to whether handedness is actually a factor.
    12. Alundra

      Quaternion to Euler very imprecise

      I finally got the left handed version working: void Quaternion::ToEulerAngles(float* X, float* Y, float* Z) const { const float SingularityTest = (x * w) - (y * z); if (SingularityTest > 0.4999995f) { *Y = 2.0f * atan2(y, x); *X = CMath::HALF_PI; *Z = 0.0f; } else if (SingularityTest < -0.4999995f) { *Y = -2.0f * atan2(y, x); *X = -CMath::HALF_PI; *Z = 0.0f; } else { *Y = atan2(2.0f * w * y + 2.0f * x * z, 1.0f - 2.0f * (x * x + y * y)); *X = asin(2.0f * SingularityTest); *Z = atan2(2.0f * w * z + 2.0f * x * y, 1.0f - 2.0f * (x * x + z * z)); } }
    13. Zakwayda

      Quaternion to Euler very imprecise

      Just out of curiosity, what leads you to believe it's due to handedness and not (as you originally surmised) axis order? (I ask because, as far as I know at least, Euler-angle conversions are usually agnostic with respect to handedness, whereas axis order does in fact matter.)
    14. Yesterday
    15. I just published my Oculus Rift game recently. I announced it on this forum to get some developer based feedback. I would now like to find some good places to gain some traction with "normal" VR consumers. ( People who are not gamedevs ) I was wondering if someone is aware of some nice places to gain some users for my game. PS: This is not a commercial project. I'm just looking to enlarge my user base.
    16. Hello! It is still difficult for me to call myself a sound designer since for the time being there are only tracks in the portfolio) Me with my partner write tracks for games and do it for free, and then we put them under the CC license so that others can use them calmly. I would really like to hear at least a couple of words of interaction from you gamedev and I would be very happy if someone our creative work is useful. Naturally, our goal is to fully sound the games, and maybe something else. So if you have any suggestions for cooperation, welcome!) Here is our website for now if someone is interested to listen. Rage-zone I hope you do not think for advertising. Our goal is not the same.
    17. This is exactly what I needed I appreciate all the advice from everyone who commented. I'm sorry I couldn't respond as soon as possible about the specifics of my question.
    18. Hi, i am composer and sound designer. Intrested in your progect. My portfolio in profile. Lets start)
    19. Alundra

      Quaternion to Euler very imprecise

      Looks like in reality it's an handedness problem, I'm in left handed, my FromEuler is in left handed and the ToEuler is in right handed. The calculation from this website is in right handed.
    20. Codemaster Jamal

      C# constructor explanation

      Oh! Ok! Thanks! I've seen this before in Java where you have to insert certain variables into the "super" of a class. Okay, I completely understand now. Thank you. I guess because I've never looked at the Plugin class before for DarkRift that, I never saw that. Definitely want to take a look at that now just so I can see how Plugin's really work and what that parameter is for.
    21. Nypyren

      C# constructor explanation

      When one class derives from another, the derived class's constructors are required to call one of the base class's constructors (unless there is a parameterless constructor, in which case that will be called implicitly if you don't specify a base constructor to call). The ' : base(parameters) ' is calling the base class' constructor. Other languages have this as well. All OOP languages I've used have slightly different syntax to do this. Java has "super". C++ has initializer lists which can both initialize members and call base class constructors.
    22. Codemaster Jamal

      C# constructor explanation

      Okay, so I know what Object Parent to Child Inheritance is but, can someone explain to me what's going on in this constructor of this class? using System; using DarkRift.Server; public class PluginExample : Plugin { public override bool ThreadSafe => false; public override Version Version => new Version(1, 0, 0); public PluginExample(PluginLoadData pluginLoadData) : base(pluginLoadData) { } } This is an example plugin I created with DarkRift Networking. I know that the class is extending the Plugin class (Meaning that the PluginExample class is a child of the Plugin class and that Plugin class is the parent class.) but, what I was trying to figure out was, what's going on with the constructor for the class? public PluginExample(PluginLoadData pluginLoadData) : base(pluginLoadData) { } I've never seen a constructor like this with other languages so I was wondering if this was a C# thing. I still got my code to work however, I was wondering what this may be exactly so perhaps I can use it to my advantage. It may be something that's only with DarkRift? Any explanation?
    23. Alundra

      Quaternion to Euler very imprecise

      Apparently the issue was the FromEuler function, using the Quaternion From Euler from the same website all works good: https://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/index.htm I think the order was an issue from the two functions yes, a conflict of convention in the maths.
    24. Thank you! I will try it.
    25. midn

      Game initialization.

      Using static variables doesn't imply that they must have a lifetime longer than main.
    26. Codemaster Jamal

      Texture/Material issue in Unity

      Try removing the old 3D model and then re-importing it. Also, try exporting your 3D model as an .fbx file.
    27. Codemaster Jamal

      My First Blender Trees!

      Hello, my name is Codemaster Jamal and roughly about one year ago I started to get back into Game Development. One of the first things I began to tackle was learning about Blender and how to create 3D models. I'll admit, it was hard at first but, eventually I got it down. Here's a few 3D models from my deviantArt page. If you are interested in seeing more, feel free to click the link at the bottom. https://www.deviantart.com/jamora
    28. Sounds sane. Is [ this ] the previous project mentioned?
    29. Hello! I am a sound designer who would be happy to help you out in creating this game. It sounds really interesting from a game standpoint as well as a sound designer standpoint with the sword and the spell casting. lots of opportunity for the sounds to come to life and further the game even more! Feel free to message me!
    30. I wasn't sure if I could post this here but, I've been learning how to make an MMORPG since I was roughly 14 years old. I'm 27 years old as of today and this is basically everything I've learned. I'm sure there's someone here that could school me in this. I honestly wanted to know what they think so far. If posting Game Dev Logs are against the rules, I will gladly remove my video and if it's possible, you can delete this thread.
    31. GoliathForge

      white dragon finger paint

      Hello, I took a look at this briefly. I'm not going to say your code is bad, (whoops) but could use some improvement. The area I would attack first is cleanliness. You are sloppy with your bracing. Case in point inside the function named writer... Here, the variable assignment to x may or may not happen depending the whatever n is supposed to be but y and z always get theirs.
    32. It also seems like using some kind of temporal averaging is the key to trying to get more effective sampling out of limited hardware resources. In addition to the SVGF that was already mentioned, Nvidia did something similar in their 2-layer Deep G-Buffers.
    33. Codemaster Jamal

      What are the requirements for creating a original game

      Sounds like a legal question but, if you're talking about going Indie start off with this. - Pick a Name, any Name. Even if it's the same name of another game, as long that name isn't Trademarked, you can still use that name, as long as your game's actual logo is different. (Though, I will advise on picking an original name, - Make a Game Logo. Copyright your logo. You won't need to Trademark because, trust me, it's a waste of time. Unless your game gets so big that it becomes a popular catch phrase, trademarking is really a waste of time and money when you're starting out as an Indie. - Create your game. Figure out the game's logic. Test the game's logic and more importantly let other people play it before launch. (This includes friends and family and would generally be considered a Beta Test) - Launch your game up on Steam, Itch.IO, Kongregate or build your own launch site. The choice is yours! There's multiple platforms for publishing a game. Figure out your needs and your game's needs and set it up to launch. That should roughly be it. If you need any more questions, feel free to message me. I'm also an Indie Developer myself so if you get the chance, check me out on YouTube. Just search up Codemaster Jamal and you'll find me. Anyhow, thanks for reading my message and enjoy being a game dev!
    34. Tom Sloper

      game idea

      You mentioned programming languages and said you were unsure of how to proceed. If you want feedback on a game concept, post it in Game Design and don't mention programming languages or production methodologies or other things unrelated to game design, and don't ask for advice about programming languages or how to code or anything unrelated to game design.
    35. lawnjelly

      Quaternion to Euler very imprecise

      That's a brilliant webpage .. shows exactly what is going on. His conversion to quaternion is using YXZ convention, and the conversion back to euler is using YZX convention I believe. If you convert back to euler using the same YXZ convention you get 45 degrees.
    36. phil67rpg

      game idea

      should I post in another forum, I want to get some feedback on my game idea.
    37. CaptainVG

      Story feedback

      Ok. I have a rough draft here that just explains the summary. I'm not a writer and I do not claim that I know everything better. But I thought of this idea and for once in my life, I have some faith in the concept and I would like to write and finish my creativity of the idea and maybe someday make it into a reality. If there is lack of depth, I plan to let someone in mind develop the characters further while still keeping the concept intact for as much as possible. I would just like opinions from you all of what do you think of the concept and the plotholes and questions that it leads to. I have just written the summary of the chapter and what the main objective is for the chapter. If you have a better format in mind, let me know so I can improve. 1. Prologue Summary: This is the beginning of the story which introduces the origins of the three gods, Jemmeous, Bruce Young and Kares. The Sky Realm is a world where only gods live. People have worshipped them for generations as they are responsible for answering people’s prayers and giving them blessings for their happiness and wellbeing. However, there are some of them who are either selfish or are not interested in people and are since then being forgotten. The council of the gods has yet to respond on what fate holds for these forgotten gods… In the present day at the Sky Realm, Jemmeous and Bruce were fighting in the arena. While fighting, Jemmeous constantly teases Bruce who got furious and ran towards him only to end up getting kicked back by Jemmeous winning the match as well as earning the Olympus trophy. On their way out of the arena, Jemmeous cheers Bruce up insisting to even let Bruce take the trophy as he considers it just an empty cup to which, Bruce denies. The two decide to find out what Kares is upto as they head to his lab. While Jemmeous is amazed by the inventions done by Kares, Bruce mocks at them for being rather useless in the realm. They encounter Kares who was busy inventing a device that has the ability to teleport to places without the need of electricity. As it was tested, it works as expected. Bruce mocks at the concept stating that it is practically useless in the realm, to which Kares sadly admits the fact. Jemmeous however cheers him up saying that it may help gods who are injured and cannot either fly or move which makes Kares smile. The three go outside and develop conversations about how life on Earth must be. Jemmeous deeply wishes that he can one day live on Earth much to Kares and Bruce’s shock. Bruce becomes furious with the statement as he wants to settle with Jemmeous on who is best in the arena once and for all to which he replies that he can’t wait for that to happen. Kares states that he is curious on how life on Earth must be considering that the world around Earth is vastly different than that of the Sky Realm but has no intention of settling life on Earth unlike Jemmeous. Meanwhile in the council, a silhouette person looks at the three from the outside. Jemiah asks if he is to send the three in the council to which the shadowed man replies yes. The next day, the three are given a message to attend to the council. They are ordered by Xander to enter the black portal outside of the coliseum as there appears to be someone stuck at the portal. When the three enter the portal, they get sucked right into a dimension. As they look around, they observe water which Karel says that it only exists on Earth. Bruce looked for the portal but it suddenly disappeared. Both Bruce and Karel panicked but Jemmeous on the other hand screamed with joy. Suddenly humans began to watch them and the three realized that they look terrifying due to their looks being deceiving and so they left to find a church. Kares manages to find the church and so the three enter it only to find an old man in there alongside a young woman. Both of them were terrified with Brian holding the crucifix in fear that the gods could harm them but Jemmeous calmed them down by simply ordering Brian to chant the mantra that Kares has written down while Bruce draws the Wicca. After Brian and his assistant chanted the words as ordered, Jemiah is summoned. Bruce demands to know of why they were over here as they didn’t find anyone stuck in the portal. Jemiah replies by saying that they are banished from the Sky realm and are to remain in Earth for the next 15 years after which they are forgotten. When asked of what he meant by this, he answered that they will be wiped out of existence which to the three of them sounded more like facing death. Jemiah further states that to prevent them from being forgotten, they have to perform any one of the two choices. 1. Helping the people in exchange for them to value the god’s existence so they can by a miracle return to the realm. 2. Becoming a mortal by marrying a mortal who can provide everlasting love to the god and the god in turn must do the same. Before Jemiah leaves, Jemmeous cleverly manages to say that these options are impossible to meet unless they get certain conditions granted otherwise they can file a complaint to the council since this is an experiment and that they can make it go public to the realm. Jemiah reluctantly agrees. The conditions that Kares has asked for are as follows 1. They must look exactly like humans and have the ability to understand the human world while keeping their powers intact which has been granted except for Bruce who is still big in size. 2. They need all of Bruce’s treasure that he has obtained in all the 10 million years of his life which has been granted. 3. They cannot be killed by legendary weapons that were built to kill gods. While this cannot be granted, they are granted the ability to sense such weapons even in far off places which can be granted. Before Jemiah leaves, he warns them that humans or other creatures that have life and move cannot be killed otherwise, they will be completely erased and forgotten and disappears. The first thing that Jemmeous suggests is to change their names inorder for the humans to accept them. Jemmeous refers himself as Jimmy, Bruce Young is remained as Bruce and Kares is named as Karel. Jimmy then says that they first should head to high school as means of not just an activity but also as means of their first spot to find their true love. Kares asks Jimmy as to what they plan to do for residence. Brian interrupts and says that they can stay here in the church for as long as they want. The gang(except Bruce) thanks Brian for his kindness. The next day, the gang enter the Orchard High School and because of how well they did in the entrance exams, they are in the 12th grade of high school meaning that they remain to stay there for the next one year. This ends the prologue. The objectives that the player must complete in the Prologue: 1. Defeat Bruce at the arena. This introduces the battle combat system. 2. Meet Kares from his lab. This teaches the basic movement of the game. 3. Enter the council. 4. Enter the portal. Optional things that can be done: 1. Talk to various NPCs from the realm if interested.
    38. GoliathForge

      Quaternion to Euler very imprecise

      https://www.andre-gaschler.com/rotationconverter/ What I'm observing from using this online converter, It appears that quaternion is indeed 45° on each axis but in the YXZ arrangement. The Euler's you get are partially confirmed but flipped Y and Z. Matching YXZ gives 45° Euler angles across the board. Perhaps that's a clue. edit: if I use your ZXY arrangement, then the input quaternion is (appears) incorrect.
    39. MrFloat

      Register a templated function?

      I think AngelScript supports template types but not functions. Something similar could maybe be made by using output variable parameters (https://www.angelcode.com/angelscript/sdk/docs/manual/doc_adv_var_type.html)
    40. That SSVDAG algorithm looks impressive, but doesn't look applicable to real-time techniques, as it doesn't look like you could construct an SSVDAG in real time. @spike1 - It won't make it faster, but hardware virtual-texture support could reduce the voxel memory requirements. The idea would be similar to sparse-virtual-shadow-maps, though it's probably not supported on the GTX 750 Ti in hardware. Maybe with a github source repo.. someone might collaborate and improve it, or someone else might find a practical use for the technique even with it's limitations.
    41. Hey, hello there! This is yet another new entry in this truly wonderful weekly update blog! This week was quite big. There is a couple of new stuff so let's get right to it! Pooling First, I want to talk about a subtle upgrade. In the game, I'm using static factories to generate different game objects such as projectiles, props and entities among other things. While this is quite handy (especially since you don't need to drag'n' drop any components at all), it wasn't really optimized. Some object (especially projectiles) could frequently be instantiated and destroyed. For some objects this is fine but for others, it can really affect the FPS. To fix this we need to use pools. These are essentially scalable stacks of the pre-instantiated game objects that are ready to use. Instead of destroying them we simply disable them and store them back into the pool, thus recycle the game object and avoiding a lot of overhead. While on the surface this might seems odd it's actually really useful with short-lived and numerous objects. Pretty simple to integrate into my factories too! It works like a charm! I've partially based my Pool system off this one if you're interested. Spark Effect Next, there's a new particle effect in the game. This one is quite AESTHETIC, so be warned. Basically, it's a Memphis design effect that is supposed to represent some kind of collision. The particles are also coloured accordingly to the colour palette too! Right now these are used on any physical hit. However, I'm still trying to think about a better use case for them... Here's a video showing them off: New Enemy Finally, I'm proud to say that there's now another new enemy in the game: the archer. This enemy uses a bow to attack. It will try to keep its distance and instead try to attack at range. It will also try to trick the enemy to avoid being targeted by them too. They also got a different behaviour that other, in which they will try to circle around their target and keep moving no matter what. When they're near their target and has a clear sight of them, they will draw an arrow, pull their bow and launch it. It's a good idea to strike when they're pulling their bow as it's when they're the most vulnerable. Like their sabre-wielding piers, they will also patrol around their room and be on the lookout for any enemies. They will also flee when weak and can be one-shot too! Here's an encounter with an archer: Minor Updates Big refactor of the GUI. Replace duplicated code with inheritance. Optimized some GUI events. Fixed some oversight in some GUIs. Added a cached state controller that can cache useful data that rarely changes. Added individual limbs target to player characters Right now there isn't any damage multiplier on the player's limbs nor are the enemies try to target some. This might be an idea for later though. Made the active arrow much more flexible Replace the unintuitive layer mask int to a LayerMask instance. It makes it so much better to edit these Made the arrow play the appropriate collision sound when colliding with objects. Big code conventions refactor. Added proper animation masks to my animated models Made most behaviour tree controllers much more flexible Basically the same thing as the active arrow, which is replacing layer mask int to LayerMask instances. Fixed bugs with the hamburgers Fixed some oversights in physic collisions between layers. Next Week I'm still not done with the archer enemy. It still needs a bit of balancing and bug fixing. I also need to perhaps complexify my behaviour tree a tad bit. I'm slowly getting there at each iteration. It's quite interesting and all but working with behaviour tree requires a lot of conception and debugging too! After I'm done with the archer, I'll probably add a gunner too. Afterwards, I'm gonna focus on the bosses. Of all entities these are probably the dumbest and also the buggiest, so that's up next. And then there's the usual suspect (relics, capacities, items, rooms, etc.). I sure hope that with the right type of enemies the game can get better exposure... Only time will tell...
    42. Pursche

      Register a templated function?

      Hi! I am having a hard time figuring out how to register a templated function. I read this page: http://www.angelcode.com/angelscript/sdk/docs/manual/doc_adv_template.html But it only seems to cover how to create a templated type with member functions (object behaviors). I saw this thread that has almost the same problem and usecase as me, in it one of the comments says that the following usage should be possible in AngelScript. Velocity@ vel = entity.getComponent<Velocity>(); But it doesn't go into any details on how to do this. It also suggests this syntax which I would prefer to avoid if possible, and yes I read the part about this having better performance. entity.getVelocity(); My most preferable usecase would be getComponent<Velocity>(entity); with entity.getComponent<Velocity>() as a close second. Is this even possible without a templated type? Could anyone show me a concrete example of registering a templated global function, preferable with specializations as well?
    43. Tom Sloper

      white dragon finger paint

      This did not belong in Game Design (game design is not about programming). It's moved to a more appropriate forum.
    44. im trying to save file as file.x old microsoft style .x files this code writes but it comes out as an error i compiled it with visual c using glut i need to be able to both read and write .x files such as wdf.x <--- here is the code sorry about spaghetti code =========================================== #ifdef WIN32 #include <windows.h> #endif #if defined(__APPLE__) || defined(MACOSX) #include <OpenGL/gl.h> #include <OpenGL/glu.h> #include <GLUT/glut.h> #else #include <GL/gl.h> #include <GL/glu.h> #include <gl/glut.h> #endif #include <stdio.h> #include <stdlib.h> int xt,yt,zt =0.0f; int xtc =1.0; #define MAX_VERTS 900000 float angle = 0; float anglf = 0; float anglg = 0; float n =0.0; GLfloat z= -0.2f; GLfloat hl= 0.0f; GLfloat zm= -0.2f; GLfloat zp= 0.2f; GLuint mousex, mousey, mousez = 0; static GLfloat Scale = 0.0f; static int i= 2; int j= 2.0; static int numVerts = 2; static struct {GLfloat x, y, z;} verts[MAX_VERTS][2]; static GLboolean dragMouse = GL_FALSE; enum {X, Y, Z}; enum {NOLIST, PLANE}; /* display lists */ enum {VERTS}; /* load data structure from file */ enum {WRITE, END}; void reshape(int w, int h) { glViewport(0,0, w,h); glLoadIdentity(); glOrtho(0,w, h,0, -1,1); /* flip y-axis around */ glMatrixMode(GL_MODELVIEW); } // not used jmcd void glRotateAxis(void){ glTranslatef(0.0f,0.0f,0.0f); //glScalef(Scale, Scale, Scale); glRotatef(angle,0.0f,+1.0f,+1.0f); //on center rotation by jmcd glTranslatef(0.0f,0.0f,0.0f); } void glRotateAxisB(void){ glTranslatef(0.0f,0.0f,0.0f); //glScalef(Scale, Scale, Scale); glRotatef(angle,0.0f,-1.0f,-1.0f); //on center rotation by jmcd glTranslatef(0.0f,0.0f,0.0f); } void glScaleIt(void) { glScalef(Scale, Scale, Scale); } void display(void) { glClear(GL_COLOR_BUFFER_BIT); /* clear frame buffer */ //glPointSize(3.0f); glColor3f(2.0, 7.0, 3.0); /* set current color to Pastashio Green */ glMatrixMode(GL_PROJECTION); //glTranslatef(0.0f,0.0f,0.0f); //glRotatef(angle,1.0f,1.0f,0.0f); //on center rotation by jmcd //glTranslatef(0.0f,0.0f,0.0f); //glRotatef(anglf,0.0f,1.0f,0.0f); //glRotatef(anglg,0.0f,0.0f,1.0f); //glRotatef(10-.01,0.0f, 1.0f, 0.0f); glBegin(GL_POINTS); //glBegin(GL_LINES); GL_POINTS if (numVerts > 1) { int i; for (i = 0; i < numVerts; i++) glVertex3d(verts[0].x, verts[0].y, verts[0].z); if(dragMouse) // numVerts++; i++; glVertex3f((GLfloat) verts[1].x=mousex, (GLfloat) verts[1].y=mousey, (GLfloat) verts[1].z=mousez); //glVertex3d(verts[1].x, verts[1].y, verts[1].z); //if(dragMouse == GL_TRUE) glEnd(); } glutPostRedisplay(); glFlush(); /* make sure all GL commands are executed */ } void writer(char *fname) { FILE *fp; GLfloat x, y, z ; int state = WRITE; int jtrig = 0.0; int i= 2.0; fp = fopen(fname, "wb"); if (!fp) { printf("can't open file %s\n", fname); } // glNewList(PLANE, GL_COMPILE); state = WRITE; while(!feof(fp)) { switch(state) { case WRITE: if (n == 0.0) x = verts[0].x; y = verts[0].y; z = verts[0].z; fprintf(fp, " %f %f %f", verts[0].x, verts[0].y, verts[0].z); printf ("xyz : %f.\n",x,y,z); printf ("numverts : %f.\n",numVerts); //printf(fp, " %f %f %f", verts[j][0].x, verts[j][0].y, verts[j][0].z); fprintf (fp, "%f \r\n",0); // j++; if(i == numVerts) state = END; i++; n= 1.0; break; if (n == 1.0) x = verts[1].x; y = verts[1].y; z = verts[1].z; fprintf(fp, " %f %f %f", verts[1].x, verts[1].y, verts[1].z); printf ("xyz : %f.\n",x,y,z); printf ("numverts : %f.\n",numVerts); //printf(fp, " %f %f %f", verts[j][0].x, verts[j][0].y, verts[j][0].z); fprintf (fp, "%f \r\n",0); // j++; if(i == numVerts) state = END; i++; n= 0.0; break; //fclose(fp); if(i < numVerts) state = WRITE; if (x == 0.0) fclose(fp); break; case END: fclose(fp); state = NULL; state = END; break; } } } void loader(char *fname) { FILE *fp; GLfloat x, y, z; int state = END; int read; n = 0; numVerts = 2.0; i = 2.0; fp = fopen(fname, "r"); if (!fp) { printf("can't open file %s\n", fname); exit(1); } // glNewList(PLANE, GL_COMPILE); state = VERTS; while(!feof(fp)) { switch(state) { case END: // read = fscanf(fp, ""); // if(read < 0) /* hit eof */ // break; state = VERTS; // glBegin(GL_LINE_STRIP); break; case VERTS: if( n = 0.0) fscanf(fp, " %f %f %f ", verts[0].x, verts[0].y, verts[0].z); // fscanf(fp, " %f %f %f", &x, &y, &z); printf("xyz : %f./n",verts[0].x,verts[0].y,verts[0].z); ////////////////////////////////////// printf("xyz : %f./n",x,y,z); ///// verts[0].x = x; verts[0].y = y; verts[0].z = z; // watch 148 n = 1.0; i++; // numVerts = i; if( n = 1.0) fscanf(fp, " %f %f %f ", verts[1].x, verts[1].y, verts[1].z); printf("xyz : %f./n",verts[0].x,verts[0].y,verts[0].z); ////////////////////////////////////// printf("xyz : %f./n",x,y,z); ///// verts[1].x = x; verts[1].y = y; verts[1].z = z; // watch 148 n = 0.0; i++; // numVerts = i; @@@@@@@@@@@@@@@@@@@@@JMCD NOW!!@@@@@@@@@@@@@@ if(x = 0.0); state = END; if (x !=0.0) state = VERTS; { // fscanf(fp, ""); //glEnd(); // state = END; } break; } } // glEndList(); fclose(fp); } void keyboard(unsigned char key, int x, int y) { switch (key){ case 'd': hl=zm; z= hl; glutPostRedisplay(); break; case 'f': hl=zp; z= hl; glutPostRedisplay(); break; case 'l': loader("./data/wdf.x"); glutPostRedisplay(); // glFlush(); break; case 'w': writer("./data/wdf.x"); glutPostRedisplay(); // glFlush(); break; case 'u': numVerts--; i--; printf("xyz : %d./n", x,y,z); glutPostRedisplay(); break; case 'c': hl=0.0f; z= hl; glutPostRedisplay(); break; break; case 's': numVerts=2; i=2; glutPostRedisplay(); break; case 'r': numVerts++; i++; printf("xyz: %d./n", x,y,z); glutPostRedisplay(); break; case 'p': Scale = 0.4f; glScaleIt(); break; case 'o': Scale += 0.4f; glScaleIt(); break; case 'a': angle += .001f; printf ("angle : %f.\n", angle); glRotateAxisB(); break; case 'z': angle += .001f; printf ("angle : %f.\n", angle); glRotateAxis(); //this whole thing is right, x below also all correct // glutPostRedisplay(); break; case 'x': angle -= .001f; glRotateAxis(); //glutPostRedisplay(); break; case 'k': angle -= .1; glRotatef(angle,1.0,0.0,0.0); glutPostRedisplay(); break; case 'y': angle += .1; glRotatef(angle,0.0,1.0,0.0); glutPostRedisplay(); break; case 'g': angle -= .1; glRotatef(angle,0.0,-1.0,0.0); glutPostRedisplay(); break; // case 'n': // numVerts--; //glutPostRedisplay(); /* request a redisplay */ // break; /* case 'q': case 'Q': exit(0); break;*/ } } void mouse(int button, int state, int x, int y) { if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN ) if (numVerts < MAX_VERTS) { dragMouse = GL_TRUE; // printf ("Mouse in play routine : %d,%d,%d.\n", x,y,z); //jmcd take out later !!! verts[0].x = x; verts[0].y = y; verts[0].z = hl; // watch 148 printf ("Index I: %d.\n", i); printf ("dragMouse : %d.\n", dragMouse); printf ("numVerts : %d.\n", numVerts); //jmcd jmk 1 printf ("hl : %f.\n", hl); printf ("z : %f.\n", z); if (xtc = 1.0) xt = verts[0].x; yt = verts[0].y; zt = verts[0].z; // fwrite(fp, " %f %f %f",xt,yt,zt); printf("xt : %i./n ", xt); printf("yt : %i./n ", yt); printf("zt : %i./n ", zt); xtc++; numVerts++; i++; glutPostRedisplay(); /* request a redisplay */ } } void mouseMotion(int x, int y) { if (GLUT_UP == TRUE) { dragMouse = GL_TRUE; if(dragMouse) { //dragmouse achieved at 11:40 AM //D //8:32 AM mousex = x; mousey = y; mousez = z; // glMatrixMode(GL_MODELVIEW); glutPostRedisplay(); } printf ("hl : %f.\n", hl); //glVertex3f((GLfloat) verts[0].x, (GLfloat) verts[0].y, (GLfloat) verts[0].z); //i++; } // glutPostRedisplay(); /* request a redisplay */ } #define ESC 27 //void keyboard(unsigned char key, int x, int y) {if (key == ESC) exit(0);} int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowSize(500,500); glutInitWindowPosition(10,10); glutCreateWindow("Polyline Editor"); glutDisplayFunc(display); glutReshapeFunc(reshape); glutMouseFunc(mouse); glutPassiveMotionFunc(mouseMotion); glutKeyboardFunc(keyboard); glClearColor(0.0, 0.0, 0.0, 1.0); glutMainLoop(); return 0; } thank you in advance sincerly JakePlow polyed3.c polyed3.dsp polyed3.plg
    45. Hi, I am trying out Vulkan ray tracing extensions and I am at the point where I need to compile shaders. I usually use DXC to compile my shaders to Spir-V but I am having trouble understanding how to create a lib_6_3 shader. This is the shader I am trying to compile: struct Payload { float4 color; }; [shader("miss")] void main(inout Payload payload : SV_RayPayload) { payload.color = float4(0, 0, 0, 1); } I was trying to use the following command to compile it but it simply does not produce any output: dxc.exe -spirv -T lib_6_3 -fspv-target-env=vulkan1.1 miss_rt.hlsl -Fo miss.spv I a clearly missing some key detail here... Well, 3 mins after writing this post, I updated my version of DXC and now it works... False alarm! Cheers!
    46. lawnjelly

      Quaternion to Euler very imprecise

      I apologise as I didn't mean to offend, slightly off topic, but it is quite interesting linguistically this kind of thing, and often comes up with Euler angles: https://english.stackexchange.com/questions/315906/pronunciation-of-the-name-leonhard-euler It has some similarities to a 'borrowed word' from another language. Often the pronounciation will be changed to fit more easily with the language that adopts it .. see pidgin english for example. As well as the phonetic pronounciation being 'yooler' in english, there is a conflict with the word oil, and our existing word oiler, in which case it makes total sense to alter the pronounciation in english, otherwise you are relying on context for meaning. The counterargument of course, which has won in maths, is that as a name it should be preserved as spoken in the original language. But you can see there are valid arguments both ways. And of course languages are dynamic, evolving and subject to change, I believe pronounciation in english has changed greatly in the past few hundred years, compare the difference between american english and british english for example. You say tomato, I say tomato...
    47. RoKabium Games

      ScreenShotSaturday

      Keeping up with the twitter hashtag of screen shots on Saturday!
    48. lawnjelly

      Quaternion to Euler very imprecise

      I tried my euler to quaternion and it gave a different result to yours. I checked and mine follows the convention on wikipedia: https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles#Source_Code which appears to follow heading, attitude, bank convention. The source you linked also claims to follow the same convention: https://www.euclideanspace.com/maths/standards/index.htm Yet the equations you use are different to that on wikipedia. I would include the code here but the code thing on the forum isn't working for me for some reason. *edit* Just as an aside, I found the wikipedia source code for conversion from euler to quaternion seems to contain an error for the y component. The three.js version seems accurate for conversion from / to euler so I am switching to this.
    49. Hello everyone, So I’ve had the Philharmonic Affordable Accuracy Monitors (1st edition) for a while now and I had planned on getting a second pair (the revised ones) and moving the old pair to the back in the future when I could. I also hoped to purchase the center channel so everything would match. Seeing as the owner of the brand has stepped down from the business due to health reasons (hope he gets better) what are some alternatives that have a similar sound and are a similar price? As I understand it, Dennis sacrificed a lot to keep the price down and the sound quality top-notch so I’m sure it’ll be hard to find something similar to the AAs. I just appreciated supporting someone so invested in their product that they did their best to please audiophiles on a modest budget. I know the center channel is a modified Pioneer product. So I’d also like to ask how difficult would it be to modify the speaker on one’s own for someone who knows little to nothing about speaker modification.
    50. VoxycDev

      First Person Catcher!

      Pony, kitten and bunny hanging out in front of the pink castle
    51. Alundra

      Quaternion to Euler very imprecise

      The problem is the imprecision is not little but very large... Puting a quaternion with 45 degrees on X, Y and Z gives this quaternion: The euler resulting from this quaternion is: Of course we are far from 45 degrees that we started but the visual result is almost the same but the Y angle is far. The "9.735610" on the Y axis should in reality be around 23 degrees. Up is the result of the Quaternion to Euler, Down is the reference 45 degrees on each axis. Used for the editor to show the euler angles to be artist friendly. But I begin to think that it should completely be avoided and do the calculation differently to get the good angles. - When the gizmo is used, instead of add another quaternion for the transform, surely the euler can be modified local and world space and then the quaternion can be created safely from these angles. - When you attach one object to another, the relative angles can surely be calculated safely too to have a good representation of the actual euler angles. It's actually the two cases where I use the quaternion to euler because I do quaternion operation then I set the new quaternion but of course then the eulers is computed by converting the quaternion to euler if you set a quaternion and not euler angles for the new rotation.
    52. fleabay

      Quaternion to Euler very imprecise

      I doubt he (Euler) cares very much.
  • 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!