Jump to content
  • Advertisement

All Activity

This stream auto-updates     

  1. Past hour
  2. What challenges do game developers face when trying to develop a 100 player battle royal? What are some of the solutions to these challenges? What will game streaming + cloud support do that will allow for 1000 players? A recent claim by Google and their Stadia platform.
  3. Let me ask a counter question, what is rythm in the program? ie when do I score maximum points? EDIT: Bonus question, How do you detect that in the program?
  4. My games are on steam and have sold in Brazil/Russia with no rating. Not sure about South Korea I'll check when I get home. Either way, don't bother worrying about this.
  5. Today
  6. An unrated game in Germany is automatically 18+ and selling (or making available!) games that are for adults to minors carries heavy fines.
  7. When the compiler evaluates (boundaryStrength, 0.f) it doesn't know you are trying to build a complex number, so it interprets it as using operator ",", which simply evaluates the left side, then the right side, then the whole expression evaluates to the right side. This should work: std::array<std::complex<float>,3> b { std::complex<float>(boundaryStrength, 0.f), std::complex<float>(boundaryStrength, 0.f), std::complex<float>(boundaryStrength, 0.f) }; EDIT: One more thing. The line with (0.f, boundaryStrength) was "working" because operator "," evaluates to the right side, which was then used in the constructor of std::complex<float> that takes a float and interprets it as a real number.
  8. Greetings, New features are ready and now the alien is able to defend himself. In this devlog I want to show the first telekinetic skills of the alien. 2 types of the skills are ready and now the alien can lift up and throw humans. After that you can search a person and take his stuff for using for the alien's purposes. The human behaivors have been expanded and now there are more interesting interactions with the alien. Inventory, scanning territory features have also been improved. New trailer is ready, show beats tell. The video with all features showcase is here:
  9. With a fixed size particle buffer, you won't need any indirect draw calls, because you already know the vertex count for the call, without the GPU doing anything. Indirect draw calls enter the picture when your particle buffer only has a maximum size, but it can hold any amount of particles less than that. In that case, the simulation+emission passes determine the actual vertex count to be drawn, so you have to parameterize your draw call on the GPU, to avoid copying and inspecting the result particle buffer, and thats what indirect draw/dispatch calls are for. (Basically instead of passing the parameters to a draw/dispatch call from the CPU as a normal function call, you write those values into a small GPU buffer from a shader, and pass that buffer to the appropriate indirect call. The only practical difference between normal and indirect calls with D3D11 is the place where the "parameters" come from.)
  10. I have some issues with this code: std::vector< std::array<std::complex<float>,3> > &hexWaves; ... std::vector< std::pair< int, std::array<std::complex<float>,3> > > boundary; // nothing works, results are always (0,0): std::array< std::complex<float>, 3 > b {(boundaryStrength, 0.f), (boundaryStrength, 0.f), (boundaryStrength, 0.f)}; //std::array< std::complex<float>, 3 > b { {(boundaryStrength, 0.f), (boundaryStrength, 0.f), (boundaryStrength, 0.f)} }; //std::array< std::complex<float>, 3 > b = {(boundaryStrength, 0.f), (boundaryStrength, 0.f), (boundaryStrength, 0.f)}; // this would work, resulting in (boundaryStrength, 0): //std::array< std::complex<float>, 3 > b {(0.f, boundaryStrength), (0.f, boundaryStrength), (0.f, boundaryStrength)}; for (int vI=0; vI<mesh.GetVertexCount(); vI++) if (vertexSingularityValence[vI] != 6) { boundary.push_back(std::make_pair(vI, b)); hexWaves[vI] = b; ImGui::Text("Baoundary wave [%i][0]: %f %f", vI, hexWaves[vI][0].real(), hexWaves[vI][1].imag()); } Only with wrong syntax i get the expected result of setting the real part to given number, and imaginary part to zero. I have used similar code quite often like in the first uncommented line, but now i guess there is some catch. What is it? The last commented line works, but it's clearly wrong. I'm very confused...
  11. RoKabium Games


    Images & screenshots from "Something Ate My Alien" game by RoKabium Games.
  12. Killersan

    MMORPG framework for Unity

    Release notes of the new version - Atavism 2019.1.0 - http://wiki.atavismonline.com/project/atavism-2019-1/Over 300 improvements, new features, and fixes, you are risking nothing, check our 14 days trial or Live Demo.
  13. I think it might be helpful to distinguish between Java / C# and C++. Objects in Java / C# means smart-objects which is an oxymoron. In Java Object orientated programming would be better called subject orientated programming. I played around a bit with C++ while trying to learn DirectX 11 at the same time. It was a bit of a steep learning curve. Anyway I abandoned that and got into C#. I soon started to fall in love with strongly typed code. It was amazing 50% of the time when my code compiled, it actually did what I wanted it to. My experience of C and C++, I did some C and Pascal way back, was that getting the code to compile was only, the beginning of a long painful journey. With C#I could rip my code apart, restructure and rewire (in other words refactor) and quickly get it to work again. I would even get the weird bug occasionally, where the code was doing what I wanted it to do, but I didn't know why. Its quite fun to try and track down why your code is working when it shouldn't be. But I was also frustrated by the lack of multiple inheritance and other short comings. C# was designed to be better than Java, but not too much better, as to become a threat to the C++ native Windows platform. So as soon as I came across Scala, with its quasi multiple inheritance it was good riddance to Microsoft, goodbye and thanks for all the fish. So from what I can make, from very limited knowledge, is that the problem with C++, was Bjarne's' "Not one CPU cycle left behind!" (relative to C). This was a great marketing slogan but a complete disaster in high level language design. You don't need 100% runtime efficiency, 80% is good enough and allows for huge beneficial trade off's in compile time safety, run time safety, compile times, reduced compiler bugs, the quality of tooling, ease of learning etc. And so the problem with smart object in c++ is that they are not very smart and can't even copy themselves properly. So I see it as a choice, or rather a balance, between smart objects and dumb data. Java's "Everything is a (smart)" object is dumb. Unfortunately Scala some what doubled down on this, but is now sensibly looking to back track. Silent boxing leads to criminal and unnecessary inefficiency. An Integer is dumb data data. An integer doesn't know, how to produce a string, convert itself to a double. An Int doesn't even know how to add itself to another Int. An requires operations to be applied to it. It has no methods. It has no identity. So to avoid boxing we must know the narrow type at compile time. However syntactically we can still write it as if these were methods. 5.toString myInt.toString So in Scala, there is usually a choice between trait / class based inheritance or type classes. Between a smart object that carries its methods around it with it to be dynamically dispatched at run time, or dumb data where operations must be applied at compile time. But the good thing is that you can still use type classes with smart objects, with objects that inherit from AnyRef. But also the type class instances that perform the operations on the different data types can themselves inherit.
  14. You fell to earth, years ago. You fell on a farm in Midwest America, miles from civilisation. You fell on Ambers farm, when she was just eight years old. And hour by hour, inch by inch, she pulled you from the wreckage. Over the years you grew up together - you recovered, while she turned nine, and then ten. You journeyed the woods together, every day an adventure, every day something new. You were the best of friends. And then one early morning the soldiers came, and that was the last you saw of Amber. Now you wake up in a lab, with scientists experimenting on you. Now they have your pieces. They’ve stolen from you. Taken what makes you powerful. Now that you’ve escaped, you’re going to take it all back. Now you’re going to leave the lab far behind, and return home, to where Amber will be waiting. ——— Project Amber is a 2D platforming game where you play as goopy, an alien captured by scientists, and use various strange abilities to outwit your would-be captors and escape the lab in which you’ve been incarcerated. As you go, you will discover more about yourself - about your lost memories, about this lab, and about it’s leader, Snarkula, and what he wants with your pieces. A puzzle game at it’s heart, Project Amber is about combining strange abilities to their greatest effect. Goopy can encase enemies in jelly, pull himself long distances with a grabbing tongue, cling to the walls and even melt through walls - but if Goopy combines these, he can bounce across levels, access impossible heights, and pull apart the terrible machines sent after him like they were confetti. Alongside a tongue grab that Goopy can use to fling himself across rooms or pull boxes or enemies from platform, and his stone skin that Goopy can use to survive attacks, Goopy will gain access to six further bizarre abilities throughout the game - regaining his powers until he’s finally ready to return home. ——— The first thing that Team Amber are hoping to create as a team is a show level for this game - a level to demonstrate the potential we feel the game has, and hopefully allow us to create the full game in the future. To help in that process we’re looking for pixel artists, to help create unique, animated sprites for the main character and a few others. Ideally you won’t be doing too much work - we want to spread the work thin, and already have background assets in development, as well as various sprites for enemies. For a little context of the quality of sprites we’re looking for, this is one of the backgrounds we have so far. Requirements A talent for pixel art and animating sprites. That’s it. Ideally You Would Also Have Experience on working on other games. Yeah it’s not a long list. If you are interested in the role, or would like to chat about it further, then drop us an email at AmberGameDev@gmail.com . If we like the sound of you then we’ll organise a chat.
  15. Thanks for the link, @LandonJerre, it’s just what I was looking for! I made a few modifications to my particle system to exploit the fixed number of active particles. I use a single RWStructuredBuffer<Particle> to update each particle’s state each frame and an SRV to the particle buffer for the vertex shader to use once updated. As I have a fixed index buffer and particle count, can I use DrawIndexed() (as it says in the slides) instead of DrawIndexedIndirect(), or does this require copying vertex data back to the CPU?
  16. GoliathForge

    Custom GC_sideScroll_promo_01

    week 3 progress.Trying to polish the original concept. Baby stepping into a sound implementation with another provided mini access header/wrapper. Takes time to learn to use which hurts today. We're doing it!

    © pffttt!2019

  17. He's a little too tall and wide to fit into the existing Fateless structures, so I put him outside. He's doing fine hanging around out and about area 2 so far. He is always equipped with some kind of rotating chaingun-type weapon, or at least one that needs cooling. So far, his mission is to make area 2 harder.
  18. rattlercreed

    Nuclear Basic Help

    Hi All I know this is a long shot but any help would be great. Does anyone still use or have used Nuclear Basic/ Fusion that can help? I still really like the language and still use it. But need help in hardware skinning for animated entities I cant seem to send the bone information over to the shader. These are the commands I've found that might help but can't figure out how to use them. GetSurfaceBoneOffsetMatrix( Surf, mat, boneind ) GetSurfaceBoneCount(Surf) GetSurfaceBone(Surf,boneind) GetEntMatrix( handle, inmat, global=False ) SetShaderMatrixArray(handle, pname$, mat,[cnt=1] ) Here is the shader I am using. float Script : STANDARDSGLOBAL < string UIWidget = "none"; string ScriptClass = "object"; string ScriptOrder = "standard"; string ScriptOutput = "color"; string Script = "Technique=Technique?Skinned;"; > = 1.0; float4x4 wvp : WorldViewProjection < string UIWidget = "None"; > ; float4x4 worldI : WorldInverse < string UIWidget = "None"; > ; float4x4 worldIT : WorldInverseTranspose < string UIWidget = "None"; > ; float4x4 viewInv : ViewInverse < string UIWidget = "None"; > ; float4x4 world : World; // array for bones matrices uniform float4x3 bonesMatrixArray[60]; extern int NumVertInfluences = 3;//<--- Normally set dynamically. // ambeint light float4 ambientLight = float4(1,0,0,1); texture diffuseTexture : TEXTURE_0; sampler diffuseSampler : register(s0) = sampler_state { Texture = <diffuseTexture>; }; // Vertex shader input data structure struct VSINPUT { float4 Position : POSITION; float4 BlendWeights : BLENDWEIGHT; float4 BlendIndices : BLENDINDICES; float3 Normal : NORMAL; float3 texCoords : TEXCOORD0; }; // Vertex shader output data structure struct VSOUTPUT { float4 Position : POSITION; float3 Normal : COLOR0; float2 texCoords : TEXCOORD0; }; // skinning vertex shader VSOUTPUT VSMain(VSINPUT Input) { // Output object VSOUTPUT Output; // Clear vertex position and normal Output.Normal = float3(0.0f, 0.0f, 0.0f); Output.Position = float4(0.0f, 0.0f, 0.0f, 0.0f); // extract bones indicies and weights from vertex float lastWeight = 0.0f; float4 blendPos = Input.Position; // This next code segment computes formula (3). for (int i = 0; i < NumVertInfluences; ++i) { blendPos += float4(mul(bonesMatrixArray[Input.BlendIndices[i]], Input.Position).xyz, 1.0)*Input.BlendWeights[i];//Input.BlendWeights[i] * mul(Input.Position, bonesMatrixArray[Input.BlendIndices[i]]); } Output.Position = mul(blendPos, wvp); // transform normal float3 norm = Input.Normal; for (i = 0; i < NumVertInfluences; ++i) { norm += mul((float3x3)bonesMatrixArray[Input.BlendIndices[i]], Input.Normal) * Input.BlendWeights[i]; } Output.Normal = normalize(norm); Output.texCoords = Input.texCoords; // return result return Output; } // skinning simple pixel shader float4 PSMain(float2 texCoords : TEXCOORD0) : COLOR0 { // just return diffuse color return ambientLight * tex2D(diffuseSampler, texCoords); } // skinning tchnique technique Skinned { pass p1 { VertexShader = compile vs_3_0 VSMain(); PixelShader = compile ps_3_0 PSMain(); } }
  19. What if you need to draw text with simple graphics? For example, you have a task in your college to draw plots with some text using C++. You can still use deprecated/legacy OpenGL 1.1 and FreeGLUT. This example shows how to draw a text using FreeGLUT and deprecated/legacy OpenGL 1.5. And this example shows how to set up FreeGLUT in Visual Studio 2015. Text_FreeGlutOpenGL15Cpp.zip - Just download and run this solution in your version of Visual Studio. But do not forget to set "Platform Toolset" to "Your Version Of VS" in the project settings. See screenshot: If you want to set up FreeGLUT from scratch then download the "Libs" folders and set settings by yourself: Libs: Libs_FreeGlutOpenGL15.zip Settings: main.cpp
  20. Just create a SRV for the buffer, you can read it back through that. Being an append/consume buffer isn't the property of the backing buffer itself, if you look at it, you specify the append flag during the UAV creation. That means anything that makes that buffer an append buffer, is handled/stuffed in by the UAV, without that it's just a generic data buffer that behaves the way it's own creation flags dictate. The vertex shader can "emit" vertices, it doesn't have to read them from a vertex buffer, and if you don't read from a VB, you don't need an input layout either, you just submit a draw call with the amount of vertices you want to draw. Basically in your case you take the vertex id input that you have available, and look up the particle data through the SRV you created in the previous step, then using that data you fill out the fields of the vertex. Actual example for point sprites: https://www.slideshare.net/DevCentralAMD/vertex-shader-tricks-bill-bilodeau Slides 15-19
  21. VS2015: Sin_FreeGlutOpenGL11Cpp.zip (Everything has been set up already. Just download, select your version of VS in "General/Platform Toolset" in the project settings and run) Release: Sin_x86_EXE.zip Tools: Visual Studio 2015 "Win32 Console Application" FreeGLUT deprecated/legacy OpenGL 1.1 (docs: https://docs.microsoft.com/en-us/windows/desktop/opengl/opengl) Settings main.cpp
  22. 8Observer8

    Text. Legacy OpenGL 1.5, FreeGLUT

    I renamed a name of the blog entry: from "Drawing a Text using FreeGLUT, OpenGL 1.5" to "Text. Legacy OpenGL 1.5, FreeGLUT" Because I need to add accent that it is legacy/deprecated OpenGL 1.1. I made this example to show the simplest way to draw a text using FreeGLUT and OpenGL 1.1.
  23. 8Observer8

    y = Sin(x). Legacy OpenGL 1.1, FreeGLUT

    I moved the sign "y = Sin(x)" on a new position.
  24. intenscia

    Mod API & SDK

    UPDATE: Support for Steam & GOG authentication is now available in the mod.io API, SDK & Unity plugin. The functionality has been implemented by Foundation game & used by over 10000 players in the first week. If you want to enable immediate and secure authentication for your players using mod.io, reach out to our team today to see how we can accommodate your authentication flow. Support for more stores will be added on request.
  25. pindrought

    Accepting IPv4 connections as IPv6 Server

    Great reply! This makes perfect sense. Thanks so much for the detailed explanation.
  26. For a dual-stack socket, the only differentiation between IPv6 and IPv4 traffic is the "format" of the IPv6 IP address. Everything is handled on (your) code side as IPv6 (AF_INET6). The only thing that is different is that IPv4 traffic will have a special "mapped" IPv6 IP address (the ::ffff:x.x.x.x format you see above). To send IPv4 traffic you need to translate to that mapped address (in your case just use the same address that connected), and if you care you can check to see if the received connection/traffic is IPv4 by checking to see if the upper 12 bytes of the address match 0000:0000:0000:0000:0000:ffff. The lower 4 bytes of the IPv6 address will be the IPv4 IP address. This page lays it out clearly (and references a few handy Microsoft/windows-specific macros for checking for and translating between IPv6 mapped addresses and IPv4, presuming you are doing a win32 project): https://docs.microsoft.com/en-us/windows/desktop/winsock/dual-stack-sockets
  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!