Jump to content
  • Advertisement
    1. Past hour
    2. TonnyStark12

      Fix content progression on a live game

      I am inspired to see the efforts you are making to build a new shape of this mobile builder game. This confession of yours is amazing and I couldn’t regret reading this https://gradesfixer.com/free-essay-examples/freedom/ article fully. Now I cannot wait to play this game so make these changes as early as possible so than I play this game, Thank you.
    3. too_many_stars

      Managing pointers upon object destruction in C++

      After reading the article, I would be interested in learning more about handles. The actual nuts and bolts. I can't find any tutorials or examples. Could you point me to something introductory even if it's a book or article? Mike
    4. ALT-Tab caused a lot of headaches in for DX9 games. Lots of games would crash on ALT-Tab even back on Windows XP (I knew of a few games that tried to hook ALT-Tab to prevent you from doing it). Most likely what's happening is the Lost Device behavior in Win10 is a little different than what it used to be back on XP or whatever OS the game was originally developed for, and they don't handle the new behavior correctly. It can also be an issue in newer versions of Nvidia/AMD/Intel drivers, and might not have anything to do with Win10. Anyhow, this is a programming forum, and isn't really the place for tech support for getting your games to work. If you want to keep discussing the technical aspects of DX9 and Win10 that's fine, but if you just want to get your games running then you'll want to go elsewhere. Some advice: you'll probably have more luck if you actually name some of these games that are crashing for you, instead of just saying "DirectX 9 games". There are probably hundred or even thousands of DX9 games in existence, and you'll probably want to narrow it down from that. 😉
    5. I thought I'd mention a bit about our engine, we're not using either Unity, Unreal or any off the shelf engine but our own proprietary engine. While we initially built a proof of concept in Unity a change to voxels quickly showed up that programs short comings (Unity's a great package and you can do some amazing stuff in it but its not optimized or intended for voxels) Our engine known as BSEd has been built from the ground up by Dazza, the other half of the team, over the last 4 years (it’s on build number 2.8.4.4.6.2 at the moment, so its been through a few versions), and having used it for nearly that long I can attest that it's a pretty sweet engine and editor. So what are the advantages, well its built from the ground up to be a voxel engine and editor so for this application its quick (Unity and Unreal can do voxels but they're slow rendering them and we have a lot of voxels in our levels) it’s made it easier to port it over to Linux and Max without too much of an issue. It’s much more tailored to our games needs and Dazza knows everything about it and can change what he need when he needs to. The Big disadvantage is that it take a long, long time to build, test de-bug etc and there’s been a lot of blood sweat and tears shed but looking back I think we can say it was worth it If you have any questions we'd be happy to answer them.
    6. Today
    7. Just do it. Start by yourself, get something done and show it to people. But you should set yourself a goal first! If it is interesting and people see passion in your work, your chances are much higher at finding people to help. Also i dont recommend writing a engine without a purpose. Get yourself a purpose, which can be anything. To give a few examples: - A tech/scene-demo - A level/model viewer - A simple editor - A physics simulation - A game Doesent matter what, anything will do. If you dont have a purpose for your engine - you will most likely have no idea what you need in your engine, therefore most likely resulting in fast motivation lost.
    8. I have been trying to figure out how does fence and present synchronize the pipeline when using vsync. I have read https://computergraphics.stackexchange.com/questions/2166/how-does-vsync-affect-fps-exactly-when-not-at-full-vsync-fps, https://www.gamedev.net/forums/topic/677527-dx12-fences-and-swap-chain-present/, https://www.gamedev.net/forums/topic/679050-how-come-changing-dxgi-swap-chain-descbuffercount-has-no-effect/, https://software.intel.com/en-us/articles/sample-application-for-direct3d-12-flip-model-swap-chains and https://docs.microsoft.com/en-us/windows/desktop/api/dxgi/nf-dxgi-idxgiswapchain-present. But I'm still a little confuesd. My major question is, assuming we are using triple buffer, will Present block cpu thread? If yes, when will it block cpu thread? I made this picture, please tell me which combination is the correct situation for next frame? In my opinion it should be B,E,H. But if it is really B,E,H, it doesn't conform to what the link#4 suggest under the classic mode section. As a matter of fact, I don't even understand how could GPU thread be 2 vsync late than CPU thread in the first place in that situation. Also, if it is really B,E,H, it doesn't conform to what Nathan Reed suggested in link#1. It seems in his example, cpu thread is not throttled by Present or vsync at all. Cpu threads start to work right after gpu finish its work.
    9. If he (and anyone else) would follow your advise, then probably forever
    10. Thanks for the input. How do I do that? Can you give me a pseudo code for that? It took me several hours to code that SAT part. At the moment, I use this code for finding contact point and normal. Is that right? static bool TestAxis(XMVECTOR axis, AABB& a, AABB& b, XMVECTOR& mtd, float& mtd2) { // intervals along axis float mina, maxa; float minb, maxb; a.supportInterval(axis, mina, maxa); b.supportInterval(axis, minb, maxb); // calculate the two possible overlap ranges. // either we overlap on the left or right sides. float d0 = (maxb - mina); // 'left' side float d1 = (maxa - minb); // 'right' side // the axis length squared float axis_length_squared = XMVector3Dot(axis, axis).m128_f32[0]; // axis is degenerate. ignore. if(axis_length_squared < 1.0e-8f) return true; // intervals do not overlap. no intersection. if(d0 < 0.0f || d1 < 0.0f) return false; // find out if we overlap on the 'right' or 'left' of the object. float overlap = (d0 < d1)? d0 : -d1; // the mtd vector for that axis XMVECTOR sep = axis * (overlap / axis_length_squared); // the mtd vector length squared. float sep_length_squared = XMVector3Dot(sep, sep).m128_f32[0]; // if that vector is smaller than our computed MTD (or the mtd hasn't been computed yet) // use that vector as our current mtd. if(sep_length_squared < mtd2 || mtd2 < 0.0f) { mtd2 = sep_length_squared; mtd = sep; } return true; } static bool AABBAABBIntersection(RigidBody* rba, AABB& a, RigidBody* rbb, AABB& b, Contact* c) { XMVECTOR mtd = XMVectorSet(0, 0, 0, 0), mtddirection; float mtd2 = -1.0f; // test faces of A for(int i=0; i<a.supportFaceCount(); i++) { if(!TestAxis(a.supportFaceDirection(i), a, b, mtd, mtd2)) return false; } // test faces of B for(int i=0; i<b.supportFaceCount(); i++) { if(!TestAxis(b.supportFaceDirection(i), a, b, mtd, mtd2)) return false; } // no intersections were ever tested. if(mtd2 < 0.0f) return false; float Penetration = sqrt(mtd2); c->a = rba; c->b = rbb; c->n = XMVector3Normalize(mtd); c->p = rba->GetPosition() + mtd*Penetration; return true; }
    11. fleabay

      Virtual Machine Questions

      You do not need (or want) to install an OS in a VM. Download VirualBox and find a premade image for each OS you need. I've been able to locate them in the past without much hassle, mostly legal. Even MS had some Windows premade images on their website that was available to download. Here are the MS images... https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ and Ubuntu here... https://www.osboxes.org/ubuntu/ Also, this will get me some flack but forget about anything but Windows on the desktop, for now at least. Mac and Linux are around 4% of the desktop market combined. Supporting Linux is a noble endeavor but Just Say No. Apple wants to piss all over OpenGL and Vulkan so just refuse to play their game.
    12. A single wall of a house is like a cube too, and in game you prevent the camera from going inside the wall. A better example would be a piece of cloth, which is so thin you could approximate it if only a grid of triangles. The easiest way is to duplicate all triangles, so they have normals to both sides, and one of each is always culled. This is usually cheaper than switching backface culling on / off depending on geometry.
    13. Dirk Gregorius

      SAT OBB-OBB - collision normal

      Sutherland-Hodgman clipping is really easy. You basically need a function that clips a segment (edge) against a plane and then you iterate the polygon edges and clip each against the current plane keeping points as specified in the algorithm. You repeat this for every plane. I found the example code in Christer Ericson book "Real-Time Collision Detection" very useful.
    14. Dirk Gregorius

      Determine Collision Point and Normal (3D SAT AABB-AABB)

      You don't need to test edge directions for two AABB. This is only necessary for OBB. For two AABB everything boils down to determine the two faces that are in contact. Then you can clip one against the side planes of the other. This gives you the contact points. For the normal you can choose either face direction. I gave a talk about contact generation some time ago. It doesn't handle AABB vs AABB, but the more general OBB vs OBB. Your case is simpler since you don't need to handle the edge cases. http://media.steampowered.com/apps/valve/2015/DirkGregorius_Contacts.pdf
    15. Still searching for any programmers whom may be interested!
    16. Josheir

      Virtual Machine Questions

      Thanks JoeJ, Josheir
    17. Jamal Williams

      Legends of Mythology

      I like the sprite animations. I can't believe this was made in Unity.
    18. Yesterday
    19. babaliaris

      Lighting: Inside faces are getting lighted too?

      And when building a house, don't you want to see inside it? How does this work?
    20. Alec Weesner

      Looking for honest feedback on my music

      For strategies on cleaning up muddiness. The first fix would be to reduce the number of low-end instruments you have. If that's not possible, then EQ is your next bet. Use EQ to remove unnecessary low-frequencies in your non-low-end instruments. You will be surprised how many of your instruments have a build-up of energy down low. If that still doesn't fix the issue, try panning some of your instruments to the side (not the bass though). Finally, try and limit the amount of reverb the low-end instruments receive. This is why it is unwise to slap a reverb on the master. Always adjust how each instrument receives reverb. Hope I helped you!
    21. quarzak stride

      Help

      I managed to the problem. I'll be more specific next time when asking questions sorry for the problem i may have caused
    22. You ask about "good development companies", and "a quality project", but then post in For Beginners rather than the business area of the site. Good companies that make quality 3D games come with a price tag. I know several good contracting companies, but unless you're talking about million dollar projects with payments at regular milestones, they won't be interested. I know a few mediocre contracting companies, but I doubt they'd be interested in anything under a quarter million, although if it is a small product and closer to $100K, they might still be interested. Good contracting work has a price tag. Currently, I estimate with $15K per work month for good work, $10K per work month for so-so work. If you are talking about this kind of project and will send me a direct message with additional information so I can vet both you and the project so I don't look bad, I can get you the bizdev contacts.
    23. AndrewJL

      Looking for honest feedback on my music

      Thank you all for the great responses! This kind of feedback is exactly what I need Thanks for the feedback! The get what you're saying about the voices and the metal clanging sound. I'll work on making it all sound smoother/more realistic. Haha yeah! It's actually a project my brother and some other people have been working on for years. I just joined recently to provide music They've done an impressive amount of work on gameplay mechanics and graphics overhaul. Thanks for the detailed feedback, Nate! You gave me a lot to consider for revisions and future projects. I have played around with the LABS choir and I agree it sounds beautiful. On this track I used Soundiron Elements which I think has the potential to sound good, but I probably am using it like a bit of a noob lol Ok thanks for the pointers. I will look into trying to work these suggestions into future versions. Ok that makes a lot of sense! I think that will really help it sound more realistic Thank you, this is really good feedback! Are there any particular placement strategies you would recommend or does it really differ on the needs of each piece? Thank you very much I really appreciate the kind words
    24. Yep, false positives happen a lot. You can contact the AV and submit your exe as many of these companies have submission sites for this very purpose. Example: https://submit.symantec.com/false_positive/
    25. Here's a couple of things to look into that may lead you to an answer. 1) Your antivirus software may have generated a new virus definition based on the previously infected executable. Even though it's clean now, this exe still has the signature it associated with that virus. You may be able to mark this as a false positive somehow and move on. 2) there's still something that your AV didn't clean.. Try another AV software? If other AV softwares give you a clean bill of health, then it's probably a false positive.
    26. Hi! Yes, this happens because the normals are facing outwards. And when rendering the graphics card does not distinguish in what way the triangle faces, if you do not use culling. In the fragment shader, you could access the built-in variable gl_FrontFacing and flip the normal if you are rendering a back-face. I'm not quite sure why you would want to do that because you can not see the inside facing triangles. What typically happens is that inwards facing triangles are not rendered at all. If you enable back-face culling every triangle that presents its back-face is not rendered. You are probably familiar with the effect that if the camera enters an object you can look through. That is backface culling in action. This is done to save GPU time as only the winding order of the triangle needs to be calculated and then it is discarded before rasterization happens.
    27. Septopus

      Tips for game programmer portfolio

      If it can be used to demonstrate your skill as a competent and efficient programmer, it doesn't really matter how old the code is.. So long as it's currently relevant to the position you seek. But as @Rutin stated having a working game demo is probably less important than following the expected application procedures, unless this demo is based on some bleeding edge research in graphics programming or something otherwise equally impressive... ;)
    28. Michael Whymark

      looking for info/ help

      iam looking to start making games I just need a bit off help and info if anyone could help me iam wanting to make a web browser style game like felspire rise of angels nidia how do I do this what would I need to start building this game or what should I do 1st I have knowlage only off making private server games and would like to make my own game thaknks
    29. ISO or stick is to install the OS ta a VM. For example you have: Windows Install USB Stick Linux Install CD MacOS Install CD You can than create 3 virtual harddisks on your VM, and install all 3 OSes to one of them. You can even run all 3 OSes at the same time in 3 windows. (This is common for virtual webservers: One large server hosts many virtual machines. If one crashes, the others keep working.) You can run Windows ten times if you have enough ram, etc.... But you can not transfer your real OS to the virtual machine, or at least this would be hard to do. (It probably is illegal to run MacOS on a Windows host, i guess, but technically it works)
    30. Josheir

      Virtual Machine Questions

      Okay, I thought I just install the VM and it would work as though it is the chosen Operating System. So, why are you mentioning an ISO and stick? Thanks, Josheir
    31. swalk studios

      Legends of Mythology

      Hello everyone! I am working on a game called Legends of Mythology. It's a singleplayer 2D pixel art action-RPG platformer, with the option of rogue-like. The game is set in a medieval/ancient/gothic setting, with a spice of steampunk. I have just released the latest build of my tech-demo for Legends of Mythology and the second development vlog. Watch the devlog here: https://youtu.be/ZoE4RswW6Ao Get the latest version of the game by joining the discord at: https://discord.gg/XnXzDgK Thank you for your time!
    32. Yes, you need to install OS to a virtual harddrive as usual, then you have a fresh windows and you can be sure it has no stuff already installed. (I always used an ISO file of Windows CD, but stick should work too.) The virtual harddrive is a file on your real computer, so you could copy it to avoid installing OS again and again for each test. But virtual machines have options for this built in, like making snapshots or duplicating virtual HDs, and they want you to use those options to make it harder than necessary, but it works finally after a bit of patience. You can also do things like sharing folders over a virtual network, or allow copy and paste to exchange data. It's pretty comfortable.
    33. Hi! Using visual studio c++ 2017 for my games. I found a malware in one of my projects. Cleaned it. The folder has no malware, but when I recompile the game the new exe-file has the malware again! I have cleaned all my harddrives from the malware (it was found on some places) but it still reappears when I recompile that project. NOTE: I can recompile any other project, those exe files doesnt contain any malwere. It's only this one project... For reference I found it with EMSISOFT and it calls it "Gen:Variant.Razy.441994 (B). Im using win 10. Thanks for any help on this strange issue! Erik
    34. swalk studios

      Legends of Mythology Dev Vlog #2

      Hello everyone! I have just released the latest build of my tech-demo for Legends of Mythology and the second development vlog. Watch the devlog here: https://youtu.be/ZoE4RswW6Ao Get the latest version of the game by joining the discord at: discord.gg/XnXzDgK Thank you for your time!
    35. Alberth

      Help

      Not a Unity user, but with such a general question, no we can't, for the simple reason that we don't know what you're stuck with. In other words, explain to us what tutorial you're trying to do, what you've done, and how you cannot proceed any further, ie what is blocking for you, and why? Be as precise as possible, as that improves the answers you'll get.
    36. Josheir

      Virtual Machine Questions

      So, the VM is basically loaded with what their new computer has at start? (Oh, by the way, your making me paranoid!) Josh
    37. babaliaris

      Lighting: Inside faces are getting lighted too?

      As i said i tried to do this and it works: //Positions //Normals //Texels //Front face (on z axis) -0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.5f, 0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.5f, 0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, -0.5f, 0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, -0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, //Front face with reversed Normals. Draw it a little farther so the depth test will pass. //Reverse -0.5f, -0.5f, 0.49f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.5f, -0.5f, 0.49f, 0.0f, 0.0f, -1.0f, 1.0f, 0.0f, 0.5f, 0.5f, 0.49f, 0.0f, 0.0f, -1.0f, 1.0f, 1.0f, 0.5f, 0.5f, 0.49f, 0.0f, 0.0f, -1.0f, 1.0f, 1.0f, -0.5f, 0.5f, 0.49f, 0.0f, 0.0f, -1.0f, 0.0f, 1.0f, -0.5f, -0.5f, 0.49f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, But i thing this method destroys the performance if for each face you need to have duplicate data to change only the normal direction.
    38. Hello everyone! I have just released the latest build of my tech-demo for Legends of Mythology and the second development vlog. Watch Development Vlog #2 here: To get the latest version of the game, join the swalk studios discord and take a look in the #dev-updates channel! Simply follow this discord link to join: https://discord.gg/XnXzDgK
    39. 1. Yes, except things like 3D acceleration 2. Yes 3. You need a shaving. Either this or please put a sticker on your webcam.
    40. I am needing to test a program on multiple window operating systems. Somewhere I read that the way to do this is using virtual machines. Is this dependable? Also, can I use a vm to successfully determine all the additional files I will need to install, for example dlls and runtimes, on my clients computers? Is it true that the VM doesn't see anything on the real computer? Thanks so much; easy if you can please, Josheir
    41. lougv22

      Tips for game programmer portfolio

      That makes sense and it's along the same lines of what I was thinking. And what about small, fun project, types of games that are quite old? As in from around 2006. Would those be too old to show in a portfolio?
    42. Hello again! I have created a basic phong model but I noticed that inside faces are getting lighted too. It seems to me like Normals (their direction) are the same outside-inside and this is why this is happening. Take a look at the following video. Outside it seems alright, but when I look inside the cube, the front face which is getting lighted from the outside, is also getting lighted from the inside. I believe that 99% this is because the inside face is actually using the same normals as the outside one, since in my vertex data normals are being initialised for each face (6 in total) not for 12. Do I have to create 72 vertices? 36 for the outside 6 faces and 36 for the inside with different normals. In the specular calculations don't be suprised by this: vec3 viewDirection = normalize(fragPosition - viewPos); The viewPos is actually the Front of the camera not the position, which is relative to the view coordinate system no the world (I'm doing lighting calculations in the word coordinate system). Instead of transforming the viewPos (Front of the camera) into the word coordinate system, i just moved it with my mind from view to word (like we learned in maths) and came out with the above calculation which gives me the appropriate vector to get the correct angle between the view direction and the reflection of the light. This is my vertex data: //Vertex Data. float vertices[] = { // positions // normals // texture coords -0.5f, -0.5f, -0.5f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.5f, -0.5f, -0.5f, 0.0f, 0.0f, -1.0f, 1.0f, 0.0f, 0.5f, 0.5f, -0.5f, 0.0f, 0.0f, -1.0f, 1.0f, 1.0f, 0.5f, 0.5f, -0.5f, 0.0f, 0.0f, -1.0f, 1.0f, 1.0f, -0.5f, 0.5f, -0.5f, 0.0f, 0.0f, -1.0f, 0.0f, 1.0f, -0.5f, -0.5f, -0.5f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, -0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.5f, 0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.5f, 0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, -0.5f, 0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, -0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, -0.5f, 0.5f, 0.5f, -1.0f, 0.0f, 0.0f, 1.0f, 0.0f, -0.5f, 0.5f, -0.5f, -1.0f, 0.0f, 0.0f, 1.0f, 1.0f, -0.5f, -0.5f, -0.5f, -1.0f, 0.0f, 0.0f, 0.0f, 1.0f, -0.5f, -0.5f, -0.5f, -1.0f, 0.0f, 0.0f, 0.0f, 1.0f, -0.5f, -0.5f, 0.5f, -1.0f, 0.0f, 0.0f, 0.0f, 0.0f, -0.5f, 0.5f, 0.5f, -1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.5f, 0.5f, -0.5f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.5f, -0.5f, -0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.5f, -0.5f, -0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.5f, -0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, -0.5f, -0.5f, -0.5f, 0.0f, -1.0f, 0.0f, 0.0f, 1.0f, 0.5f, -0.5f, -0.5f, 0.0f, -1.0f, 0.0f, 1.0f, 1.0f, 0.5f, -0.5f, 0.5f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f, 0.5f, -0.5f, 0.5f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f, -0.5f, -0.5f, 0.5f, 0.0f, -1.0f, 0.0f, 0.0f, 0.0f, -0.5f, -0.5f, -0.5f, 0.0f, -1.0f, 0.0f, 0.0f, 1.0f, -0.5f, 0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.5f, 0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.5f, 0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.5f, 0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, -0.5f, 0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, -0.5f, 0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f }; This is my fragment shader: #version 330 core //Framgent Output. out vec4 aPixelColor; //Normals and TexCoordinates. in vec3 fragNormal; in vec2 fragTexCoord; in vec3 fragPosition; //Light Source. struct LightSource { vec3 position; vec3 ambient; vec3 color; }; //Material. struct Material { sampler2D diffuse; sampler2D specular; int shininess; }; //Uniforms. uniform LightSource light; uniform Material material; uniform vec3 viewPos; //Declare Functions. vec3 GetAmbientColor(); vec3 GetDifffuseColor(); vec3 GetSpecularColor(); //-_-_-_-_-_-_-_-_-_-_-_-_-_-_-Main Function-_-_-_-_-_-_-_-_-_-_-_-_-_-_-// void main() { float alpha_value = texture(material.diffuse, fragTexCoord).w; vec3 ambient_color = GetAmbientColor(); vec3 diffuse_color = GetDifffuseColor(); vec3 specular_color = GetSpecularColor(); vec3 final_color = ambient_color + diffuse_color + specular_color; //Set the final color. aPixelColor = vec4(final_color, alpha_value); } //-_-_-_-_-_-_-_-_-_-_-_-_-_-_-Main Function-_-_-_-_-_-_-_-_-_-_-_-_-_-_-// vec3 GetAmbientColor() { return light.ambient * vec3(texture(material.diffuse, fragTexCoord)); } vec3 GetDifffuseColor() { vec3 light_direction = normalize(light.position - fragPosition); vec3 normal = normalize(fragNormal); float diffuse_factor = max(dot(light_direction, normal), 0); return (light.color * diffuse_factor) * vec3(texture(material.diffuse, fragTexCoord)); } vec3 GetSpecularColor() { vec3 light_direction = normalize(fragPosition - light.position); vec3 normal = normalize(fragNormal); vec3 viewDirection = normalize(fragPosition - viewPos); vec3 refrection = normalize(reflect(light_direction, normal)); float spec_factor = pow( max(dot(refrection, viewDirection), 0) , material.shininess ); return light.color * spec_factor * vec3(texture(material.specular, fragTexCoord)); } This is the vertex shader: #version 330 core layout(location = 0) in vec3 aPos; layout(location = 1) in vec3 aNormal; layout(location = 2) in vec2 aTexel; uniform mat4 model; uniform mat4 view; uniform mat4 proj; out vec3 fragNormal; out vec2 fragTexCoord; out vec3 fragPosition; void main() { gl_Position = proj * view * model * vec4(aPos, 1.0f); fragNormal = mat3(transpose(inverse(model))) * aNormal; fragTexCoord = aTexel; fragPosition = vec3(model * vec4(aPos, 1.0f)); }
    43. If you're looking to have a portfolio as a programmer, then you need to focus more on code, and less on visual examples. This is a common mistake juniors make. For example, It's great to showcase the visual result of your code, but it's more important to display how clean your code is and what you did to achieve the desired result, and a way for the recruiter to gage your competency. Even if you make a full featured game with Unity, you still want to highlight the 'coding' parts, this means you're going to want to share your source code files. You're not applying as a game designer, or game artist, you're applying as a game programmer. FYI, do not email game companies your game. Stick to applying for their posted jobs, and if they want to see your game you'll go through the proper process. Game companies will usually never look at your game in such a manner as there is potential liability. Example, you sent a game as part of your resume to Company A, and four months later they released a game similar to the example you sent. This is common practice everywhere to my knowledge. The same applies to people trying to pitch game concepts to studios. Best of luck.
    44. DirectX 9 is extremely old(in tech terms) and no longer directly supported by modern hardware. This means that all modern systems that support it have to emulate the hardware, there is also really no financial motivation for them to fix bugs like this because DirectX9 is no longer a supported platform... This is how games eventually become completely obsoleted, even though the modern hardware is fully able to handle what it is trying to do, it just doesn't speak the same language anymore... It happens to even the best of them eventually.
    45. A simple answer as Zipster might be alluding to, is to look at the characters. Make the warrior have a very low magic stat and the magician have a low physical strength stat.
    46. taoprox

      HTML5 Canvas Online RPG (MORPG)

      I've tried to edit my original post but I guess there is either a time limit or a limit to the number of edits. Just thought I would put up a screenshot here. Thanks, Tao
    47. quarzak stride

      Help

      I am new to game developing using unity and i need help to learn the basics the tutorials don't help so can any of you help me understand?
    48. Septopus

      Tips for game programmer portfolio

      I've never "worked" in the gaming industry so I cannot say about this specifically, but generally speaking large email attachments(unless asked for) of any kind are rarely appreciated. A stripped down web demo with a visible link to download a more complete PC version might be a good idea. Through my IT industry experience; I found it's way easier to get people to actually look at something if it only takes one click, and it doesn't install anything.
    49. I am working on multiple projects, one of which is using windows API. 😉 I am trying to catch a WM_DISPLAYCHANGE in WndProc switch for message. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_DISPLAYCHANGE: { The problem is that when I catch the event for a resolution not supported by my application, there is flash with this screen before the event is caught. Is there any way to bypass this? Oh, and I tried changing the WM_PAINT code too. Thanks for any help, Josheir.
    50. "This is the End" combines the squad-based strategy features of XCOM with survival elements; it is based in a steampunk setting. See more at my TIGSource devblog: https://forums.tigsource.com/index.php?topic=65119
    51. Hi, this is my first blog entry here and also the first time that I actively participate in Gamedev.net. I am a software developer who develops application software at work. At home, I develop games in my spare time. I used to read Gamedev.net articles and blog posts for inspiration and motivation. Since I have the RSS feed subscribed on my phone, I read about the Gamedev.net Frogger challenge and I thought that I'm not interested in Frogger, but that I liked the idea of the community challenges. When the Frogger challenge was over, I read about the dungeon crawler challenge and I thought: "Okay guys, now you've got me!". I always wanted to create an old-school RPG in the style of Daggerfall or Ultima Underworld with modern controls (although I never really played them). More than 10 years ago, I started to write a small raycasting renderer in C++. Raycasting is the rendering technique that was used by the first person shooters of the early 90's (see also [1]). I never really finished that renderer and put the project ad acta, until, some years later, I stumbled across the old code and started porting it to Cython[2] in order to be able to use it with the Python programming language[3]. After some time, I was able to render level geometry (walls, floor, ceilings and sky), as well as sprites. After solving the biggest problems, I lost interest in the project again -- until now. I thought the dungeon crawler challange was a great opportunity for motivating myself to work on the engine. At the same time I would create a game to actually prove that the engine was ready to be used. I started to draw some textures in Gimp[4] in order to get myself in the right mood. Then I started to work on unfinished engine features. The following list shows features that were missing end of December 2018: Level editor Hit tests for mouse clicks Processing mouse scroll events Writing modified level files to disc (for the editor) UI Text Buttons Images Containers (layouting child widgets in particular) Scheduling tasks (async jobs that are run at every frame) Collision detection for sprite entities Collision detection for level geometry (walls) Music playback Fullscreen toggle Animated sprites Directional sprites (sprites look different depending on the view angle) Scaling sprites Refactorings / cleaning up code Documentation & tutorials Fixing tons of bugs Luckily, many of the above features are implemented right now (middle of January 2019) and I can start focusing on the game itself (see screenshots below; all sprites, textures and UI are hand-drawn using Gimp[4] and Inkscape[5]). The game takes place in a world which is infested by the curse of the daemon lord Ardor. Burning like a fire and spreading like a plague, the curse causes people to become greedy and grudging, some of them even turn into bloodthirsty monsters. By reaching out to reign supreme, the fire of Ardor burns its way into our world. The player is a nameless warrior who crested the silver mountain in order to enter Ardor's world and defeat him. To open the dimension gate, the player has to defeat tree dungeons and obtain three soul stones from the daemon's guardians. The following videos show some progress: First attempt: Rendering level geometry and sprites; testing textures; navigating through doors (fade-in and out effects) First update: Adding a lantern to light up the dungeon: Second update: Rendering directional sprites and animations Raycasting (Wikipedia): https://en.wikipedia.org/wiki/Ray_casting ↩︎ Cython: https://cython.org/ ↩︎ Python: https://www.python.org/ ↩︎ Gimp: https://www.gimp.org/ ↩︎ Inkscape: https://www.inkscape.org/ ↩︎
    52. timothyjlaird

      Question on which engine should I use

      Monogame may be something to look at. Its a port of xna so it's got a very solid tutorial base (most xna stuff seems to apply). I'm using it for 3d but 2d seems solid: http://rbwhitaker.wikidot.com/monogame-2d-tutorials
  • 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!