Jump to content
  • Advertisement
    1. Past hour
    2. Black Water

      (hobby) artists

      Hi! Sorry for my English But, i wanna ask you, maybe u searching for 2d artist?I wanna join to team, and try to be artist for game dev, wanna have some experience and make my portfolio.https://www.instagram.com/samueleeroy/Here u can find some of my finished arts. Thank you! Have a nice day!
    3. Black Water

      2D Concept Artists, Want to Improve your Portfolio?

      Hi! Sorry for my English But, i wanna ask you, maybe u searching for 2d artist?I wanna join to team, and try to be artist for game dev, wanna have some experience and make my portfolio.https://www.instagram.com/samueleeroy/Here u can find some of my finished arts. Thank you! Have a nice day!
    4. Hi! Sorry for my English But, i wanna ask you, maybe u searching for 2d artist?I wanna join to team, and try to be artist for game dev, wanna have some experience and make my portfolio.https://www.instagram.com/samueleeroy/Here u can find some of my finished arts. I love isometric and hope, will find team, who will make game with isometric look.Thank you! Have a nice day!
    5. Today
    6. First, I'm sorry for the poor English I would like to open the graphic file of the retro game. In the DOS ~ Windows 95 era, As a result of confirming some, the game was produced by Watcom tool I attempted to open it with dragonUnpacker etc, but it failed. I can create graphics for games, but (2D, 3D) can not do professional coding, I would like to open this file and use it for remake (personal , not commercially available). I think that this file extensions is the company's unique File extensions. Will someone help me? help.zip
    7. Hello, I'm wrapping up my Game Programming and Development program at the end of December. Right now, I'm concentrating on gameplay programming and I'm doing everything I can to make my resume as attractive as possible. I'm graduating with a 4.0, have been inducted into an honor society, and volunteer my time/writing for an online publication service. Despite this, I'm noticing almost all job postings I've reviewed require at least one year of experience in the field on the low end. Has anyone landed an entry level game development job right out of college? Is this a rare thing? I've had two call backs from Revature and Syntel. I've heard mixed reviews of both, but taking a job from either would get my foot in the door and give me some professional IT experience. I'd obviously prefer to start at a game dev studio. Is it possible to start at a game development company right out of college? If so, what steps I should take to ensure that I can do this? I'm working on a portfolio and have registered my own dot com. Any advice would be greatly appreciated.
    8. Good C++ is always faster than good C# or Java. However the point I was trying to make about game engines is that even if you write your game logic in C#, it is very rare for most of your execution time to be gamelogic. And the actual engine core code is usually written in C++. Compare this to the mobile browser wars of earlier this decade: Android always boasted a faster JavaScript engine than iOS. Yet mobile Safari allways blew it away in terms of performance. Why? Because when dealing with multimedia web-sites, Javascript was rarely the performance bottleneck. It was the browser's rendering engine which was doing all the heavy lifting. Game engine performance tends to work in much the same way. However, if you are one of the rare few doing cutting edge CPU work on your game, then you should be using C++. It's not about "no heap allocation whatsoever". But rather trying not to do any real time heap allocations. Try not to call "new/malloc" when your game is running. If you are using C++ try not to call "delete/free" when your game is running. Just preallocate as much as you can at the beginning and recycle it as much as you can. For ex: I wrote a rather complex pathfinding algorithm for an RTS. The performance more than doubled if I "recycled" my memory structures when I was done with them. So subsequent calls would just reinitialise the memory structures from the previous calls.
    9. I don't know how anyone can avoid heap allocation in programs of any size. That goes for Java, C# or C++. Objects on the stack go away when you leave a routine. The only other option is static/global objects, so yeah I guess if you want to go back to old Fortran style you can do it, but you can end up with a lot of wasted memory. New in C++ is only as bad as the implementation and I would guess in most performance sensitive cases it's generally overloaded. I almost never use stock new. I only use it for the simplest things. My current heap implementation uses VirtualAlloc and has slabs, free-lists,8 byte aligned 32 bit pointers (on 64 bit machines) and other such things to make allocation as fast as possible and use as little memory as I can get away with. Well I'm working on an MMO planet engine. It uses voxels, run time fractal functions and stuff like that. It has to be capable of generating terrain for a whole planet without actually storing it on disk. It has to generate two versions of the planet, one for viewing and a very localized version for physics, although admittedly the physics isn't so complex. It's just basically pill to mesh collision and response, and gravity, but since the planet is spherical I can't use any cheats that require one axis to always be "up". While it's true that some applications can afford to give away performance, that's far from universally true especially with cutting edge games. With efficient code you can always do more with less. If nothing else, the game will run decently on older computers. I've bench-marked C++ vs C# vs Java many times, and C++ always comes out much faster, sometimes several times faster. One more comment, memory allocations can be nearly free. Most of time time when I allocate something it just pops a bit of memory off of a free list. The code for it is even in the header file so it's inlined. Only on occasion do I have to allocate a new slab. Freeing memory is the same story. I would much rather have a good heap system then trying to reuse memory from old objects in the code of the application. That sounds like a nightmare to me.
    10. mukuro

      Bloom shader in a 2D game

      You could render glowing objects to a separate render target, apply bloom on it then merge it with the main render target.
    11. I am definitely having some problems with picking the right colors for everything. The main problem I am experiencing is deciding which textures I should put on turrets. I don't want them to be all metallic, but if I try adding different colors, they start to seem off somehow. The link you gave me seems very useful, I will certainly have a closer look at it, maybe it will help me while picking the right colors for everything. Anyways, big thanks for helping me out, I really appreciate it
    12. Yes, I need this effect on many other objects but not on the whole screen, and I would't really change all my assets with extra padding.. So which kind of approach you suggest to have a glow/bloom effect just on some actors on the screen?
    13. btower

      Bloom shader in a 2D game

      Bloom shaders are usually done in screenspace as a post-processing shader (on all the pixels of the screen). If you really need to do it on a per-material basis (I can't think of a reason why though), you could add extra empty space around the banana to make room for the blooming when you sample the 2d texture. I wouldn't recommend this approach, since you need to adjust all your assets this way if you need to bloom everything.
    14. Hello, I'm trying to make a bloom effect in my 2D game made with LibGDX. I've a problem with the shader side, in short the glow effect should be go off the bounds of the texture, if I have a texture 40x40 the shader should cover 60x60 for example. This image explain better the problem I have: , as you can see the bloom effect is cut when the texture ends. I suppose that I should modify the default vertex shader to get what I need but I'm not very familiar with GLSL programmig so I ask if someone could help me. Vertex: #ifdef GL_ES precision highp float; precision highp int; #endif attribute vec4 a_position; attribute vec4 a_color; attribute vec2 a_texCoord0; uniform mat4 u_projTrans; varying vec4 v_color; varying vec2 v_texCoords; void main() { v_color = a_color; v_texCoords = a_texCoord0; gl_Position = u_projTrans * a_position; } Fragment #ifdef GL_ES precision highp float; precision highp int; #endif varying vec4 v_color; varying vec2 v_texCoords; uniform sampler2D u_texture; uniform mat4 u_projTrans; uniform float u_blurSize; uniform float u_intensity; void main() { vec4 sum = vec4(0); // blur in y (vertical) // take nine samples, with the distance blurSize between them sum += texture2D(u_texture, vec2(v_texCoords.x - 4.0*u_blurSize, v_texCoords.y)) * 0.05; sum += texture2D(u_texture, vec2(v_texCoords.x - 3.0*u_blurSize, v_texCoords.y)) * 0.09; sum += texture2D(u_texture, vec2(v_texCoords.x - 2.0*u_blurSize, v_texCoords.y)) * 0.12; sum += texture2D(u_texture, vec2(v_texCoords.x - u_blurSize, v_texCoords.y)) * 0.15; sum += texture2D(u_texture, vec2(v_texCoords.x, v_texCoords.y)) * 0.16; sum += texture2D(u_texture, vec2(v_texCoords.x + u_blurSize, v_texCoords.y)) * 0.15; sum += texture2D(u_texture, vec2(v_texCoords.x + 2.0*u_blurSize, v_texCoords.y)) * 0.12; sum += texture2D(u_texture, vec2(v_texCoords.x + 3.0*u_blurSize, v_texCoords.y)) * 0.09; sum += texture2D(u_texture, vec2(v_texCoords.x + 4.0*u_blurSize, v_texCoords.y)) * 0.05; // blur in y (vertical) // take nine samples, with the distance blurSize between them sum += texture2D(u_texture, vec2(v_texCoords.x, v_texCoords.y - 4.0*u_blurSize)) * 0.05; sum += texture2D(u_texture, vec2(v_texCoords.x, v_texCoords.y - 3.0*u_blurSize)) * 0.09; sum += texture2D(u_texture, vec2(v_texCoords.x, v_texCoords.y - 2.0*u_blurSize)) * 0.12; sum += texture2D(u_texture, vec2(v_texCoords.x, v_texCoords.y - u_blurSize)) * 0.15; sum += texture2D(u_texture, vec2(v_texCoords.x, v_texCoords.y)) * 0.16; sum += texture2D(u_texture, vec2(v_texCoords.x, v_texCoords.y + u_blurSize)) * 0.15; sum += texture2D(u_texture, vec2(v_texCoords.x, v_texCoords.y + 2.0*u_blurSize)) * 0.12; sum += texture2D(u_texture, vec2(v_texCoords.x, v_texCoords.y + 3.0*u_blurSize)) * 0.09; sum += texture2D(u_texture, vec2(v_texCoords.x, v_texCoords.y + 4.0*u_blurSize)) * 0.05; gl_FragColor = sum * u_intensity + texture2D(u_texture, v_texCoords); }
    15. sprotz

      Car Spinout in Unity

      How do I go about adjusting the tendency for a car to spinout in Unity? The standard assets car physics have drifting but no spinout. I read that spinout is caused by the rear tyres losing traction but I think rear traction is dynamic, not static. Does it depend on lateral velocity of the rear wheels? I need at least a tutorial with code example (in javascript) if not a demo project.
    16. Bregma

      Font readability across devices?

      You're forgetting viewing distance. It's the important thing when it comes to apparent type size, pixel density is only important when it comes to rendering. The goal is to render at a size such that 12-point type appears to be 12 points tall subtending the view arc. There are 72.27 points to the inch (hey, the 12th century CE was pre-metric), so traditionally what gets done in the size of an inch gets stretched or shrunk appropriately so everything fits. The general rule of thumb is handheld devices are viewed at about 30 cm, a computer monitor at about 60 cm, and a TV at about 300 cm. If you were rendering text on a 72 DPI standard computer monitor (until recently modern monitors were 96 DPI because Apple held patents on subpixel rendering and Microsoft compensated by requiring larger monitors so their text would look better, long sad story) you want to render a 12-point font 12 pixels high. On a 300 DPI phone screen, you would want it about 25 pixels high, except it's half the distance from your eye so it need to be less. What I'm trying to say is you need to take viewing distance into account, not pixel density of the display.
    17. If it's only the GC that's bothering you, you can circumvent this problem by not using the "new" keyword too often and recycling your classes. Using "new" in C++ isn't such a great idea either because it will lead to alot memory fragmentation. I tend to try and avoid heap memory allocation in real time games altogether. In unity's C# for example "new Vector3" does not create a reference. You are completely right. But what kind of game are you making (and on what hardware?) where this is a real performance issue? Today's smartphones are powerful enough to overcome most of this. And the really core performance code in engines is written in C++ anyway. Whether you are using Unity or Unreal, both engines' core functions are not written in a scripting language. While you might be coding for some extremely low spec device, I doubt any of the engines target such devices so I assume you are talking about smartphones here. And with smartphones, it's usually the GPU's fragment shaders that set the performance bottleneck. With CPUs, unless you are writing your own physics, or some really fancy AI I doubt any of this would matter. Unless you are note optimising your code (making too many real time memory allocations and such). But you can write bad code in any language...
    18. mathematical

      QR Algorithm & Eigen value order

      Hi All, I'm using the QR algorithm to break a matrix down into eigen vectors & eigen values. The code i'm using looks something like this: QRAlgorithmResult QRAlgorithm(Matrix S) { Matrix A = S; // Eigen values Matrix Ev = Matrix(); // Eigen vectors for (int i = 0; i < num_iteration; ++i) { QRDecompResult QR = QRDecompose(A) Ev = Ev * QR.Q A = QR.R * QR.Q } Vector eigenvalues ( a[0], a[4], a[8] ) Vector[] eigenvectors = Vector[] { Vector(Ev[0], Ev[1], Ev[2]), Vector(Ev[3], EV[4], EV[5]), Vector(Ev[6], Ev[7], Ev[8]) } return QRAlgorithmResult(eigenvectors, eigenvalues) } Problem is, the most significant eigen values are always first! So, if i have a matrix where the eigen values represent scale, and the scale i'm looking for is (1, 15, 1); the resulting eigenvalues would be (15, 1, 1). The eigen vectors are in the same order. This is the matrix that results in the above error: 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 15.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000 So, my question is. How can i re-order the results, so that 15 is where i expect it to be? I've been trying to figure this out for a few days now, but i've got nothing :(
    19. In the real world it has never been the case that as you travel farther from you home there is less and less civilization, it's just that the civilization increasingly differs from your own. The local civilizations are more adapted to their local harsher conditions than you, as a foreigner, would be. Consider how the European migrants almost died in Massachusetts until the Pawtuxet demonstrated their more advanced technology to allow survival in local conditions. The local technology for addressing the harsher local conditions would work better than the stuff you brought with you: for all intents and purposes it is "more advanced" equipment. So, it makes sense that as you go deeper into the "unknown" the more advanced local trade goods would be. As you travel into Orcischland, the available Orc slaying and defense equipment works better against Orcs than the suff from Home otherwise the Folk there wouldn't be surviving. Past that in High Blorghia, your shiny Orcslayer won't work well against the Blorgh and you'll want to trade it in for a brand new Blorghbasher. Maybe even with some friendly Orc traders in a villiage just across the frontier.
    20. I don't think I want whole classes being created for me, but I suppose that's a matter of preference. Auto completion with C++ however works fine for me in Visual Studio. If it ever stops working it means I've messed something up big time which means I immediately go and fix it. For me most of this is kind of irrelevant however, because again, I don't want to take the performance hit, I don't want to use a GC, I sometimes use multiple inheritance which C# doesn't support, and I often use arrays of classes and/or structs (not references to them) which Java doesn't support. (correct me if I wrong on any of this because it's been a while since I programmed in Java or C#, so things may have changed)
    21. What ? You mean you have run into performance problems because of something like that ? That doesn't sound likely at all. All vector * float really is, is: public static Vector3 operator *(Vector3 lhs, float rhs) { return new Vector3(lhs.x * rhs, lhs.y * rhs, lhs.z * rhs); } Apart from that, that code snippet isn't too bad. If you're working with the separate components instead of directly using the constructor, that's really just style at that point. ("this" is pretty redundant though, yeah.) Btw. That's "Javascript" or rather UnityScript right there. Doesn't have too much in common with Java.
    22. The best code completion and refactoring tools for the other popular languages. (Javascript[webstorm] ,Python[pycharm] ,C++[visual-assist] ,etc...) do not come close to what you get for C# and Java. In C# and Java I sometimes create whole classes and interfaces just by using automatic refactoring tools. In C++ for example refactoring doesn't yield the same trusted result, and usually fails for all but the most trivial refactoring tasks. Same goes for auto completion. I think that the preprocessor is to blame for this. And many engines make heavy use of preprocessor directives.
    23. Picking up my programming habits, sorry about that; at this point it is ingrained into me. Because I make a lot of games on mobile I have run into some problems when multiplying vectors with other data types. So because vector * float is slower than float * float I avoid it. The way I would have done this if used in my own game is like this: void MoveObject(float InXAxis, float InYAxis){ transform.position += new vector3(InXAxis * Speed * Time.DeltaTime, InYAxis * Speed * Time.DeltaTime,0); } As you can see my real naming methods are even worse. I add "In" to everything that goes into a function. All functions must have two descriptive properties in the name, so I get less naming problems like damage.damage(). Lastly all my own code should start with a capital letter, that way I can see what functions are my own; because it is more likely to have bugs. All these tricks are things I developed while coding my own games. I am not a programmer, everything I know I learned the hard way. They are redundant but has helped me makeover sixteen games from start to end now. The other problems is probably from me not testing the code. As a non programmer I prefer the whole over naming thing if it helps make things clear. I only avoid words like "manager" and "system" that don't actually mean much, even so I still use them from time to time. Object here tells me the function moves a Unity object and won't work on moving a pixel or something else.
    24. Often i used the way where the game object included a RenderObject. and the render object was the one handling shaders, textures and so on. Since you can have game objects that support things that don't need to be rendered you, yourself decide which class is needed to be rendered. It´s similar to what MJP is talking about with entity systems. However, I was never a fan of entity systems but rather modules ( they are somewhat the same thing in the big picture ) So to put this in code, something like this. class Player { private: RenderObject* p_RenderObject = null; string name; int hp; public: public Player() { p_RenderObject = new RenderObject( Shader.PlayerShader, Texture.PlayerTexture, new Vector3( 0.0f, 0.0f, 0.0f ); } }
    25. The best way to learn this stuff is to try different techniques and finish projects. You learn a lot from just having to take a project from concept to conclusion, because that's how you run into all the problems and have to solve them. After each project you can consider how your solutions and systems worked, and think of new techniques that you might try next time.
    26. ChuckNovice

      CBVs in Descriptor Heap?

      I re-wrote big chunks of code in that area, did some refactoring, double-checked my stuff and it's now working. I most likely had the root signature of a previous pass bound at that point which would match what you said. On top of that my call to CreateConstantBufferView had a wrong BufferLocation. Thanks for the answer, I wanted to be sure before spending few hours on this. Thanks, the usage of root / table is clearer with that explanation. While refactoring my view manager I kept your post into consideration and made it possible to specify whether any view should be used in a table or directly in the root upon creation. Both ways return an object that encapsulate the necessary binding information of the view in a IConstantBufferView / IShaderResourceView / IUnorderedAccessView like the DX11 way. I can then further validate those information against the root signature when binding if I want. To bind a descriptor table I force the programmer to pre-create a "ResourceBindingState" by specifying an array of IResourceView (IConstantBufferView / IShaderResourceView / IUnorderedAccessView). I use that object to know which views need to be copied contiguously in the shader visible heap and store information on how to bind it later (GPU pointer and such). I can now concentrate on finding a solution for the heap fragmentation since I want to make it possible to keep my ResourceBindingState alive as long as the views don't change. Really thanks for your contribution on the subject.
    27. Diluting the value of items because the same effects are spread over more items in more slots could be a good thing: item quality can have low variance and power level increases can be much more gradual than with few, possibly overpowered items. For example, suppose the character party is stuck at a certain combat encounter that regularly ends in retreat because the enemies can kill our heroes faster than the party can kill the enemies. They have low attack bonus, i.e. they collectively lack items that provide good attack bonuses, relative to their progress in the game; let's assume the traditional D&D scale in which +1 to hit means hitting x+1 times rather x times out of 20. At this point if they find their first enchanted sword and it is +4 (at least 25% more hits; the sword would be very valuable and possibly famous) the fighter equipped by it would be overpowered and the encounter would become easy, while if they find a +1 or +2 sword it would become winnable but remain challenging. And later they could find enchanted rings, bracers, underwear, etc. with small bonuses (usually +1, with +2 progressively less rare to provide an upgrade after saturating all slots with +1 items).
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!