• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.


  • Content count

  • Joined

  • Last visited

Community Reputation

467 Neutral

About TeaTreeTim

  • Rank
  1. Should be opposite:     struct PatchOutputType { float edges[3] : SV_TessFactor; float inside : SV_InsideTessFactor; };     PatchOutputType ExamplePatchFunction(InputPatch<HullInputVertice, 3> input) { PatchOutputType output;   output.edges[2] = FactorFromPoints(input[0].pos.xy, input[1].pos.xy); output.edges[0] = FactorFromPoints(input[1].pos.xy, input[2].pos.xy); output.edges[1] = FactorFromPoints(input[0].pos.xy, input[2].pos.xy); output.inside = FactorFromPoints((input[0].pos.xy + input[1].pos.xy + input[2].pos.xy) / 3.0f);   return output; }  
  2. Since that example (1-3) deliberately eliminates axes with low weights, it might be best to test and not sample if weight is 0. I don't know why they allude to this and not do it in the sample code.
  3. What depth buffer format are you using? I'd try again with higher precision. 
  4. Why wouldn't backfaces appear in wireframe. Do you mean you are using culling CW or CCW in the shader or that even in solid they show? What do you mean 'even well above ocean surface'?
  5. I do it like this: http://www.socoso.com.au/Tiogra/Index.html?page=basemesh.html A combination of torus and tesselation. Tesselation has its limits as to how much and it also has other issues, such as the triangular orientation inherent in the system. It is also not magically faster, more triangles still means more resources to render. It is very good for monolithic grids where you have areas that need more detail (such as rocky parts).
  6. If everyone ran from what they didn't like no games will ever get made.   Even if you love programming and enjoy puzzle solving, when you do programming for a living there is going to be a point where you will come to hate it; if only briefly. What will you do at this point, abandon your dreams just because you don't like programming?   What about the Indie developers who dream of making there own games, yet they hate programming and can't afford to hire a programmer, should they give up?   I think the point is games aren't just about programming. Not everyone is suited to programming and just at a person to person level, you are welcome to do something you don't like but if you are more suited to model design, you'd be better off doing that and making some money on turbosquid etc. One day someone might commission you for a game.
  7. So just to go over the basic points: - You are confident the matrix gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] is updated every frame correctly (no silly error in the camera class)? - You confident this is a UV coordinate issue and not for example vertices moving or a depth buffer problem? - You don't have any hardware extras turned on in the Catalyst utility, particularly relating to anti-aliasing? - You are confident this has nothing to do with the reflection mapping you seem to be doing? Edit: and have you tried turning down vsync and matching the frame rate in catalyst if it lets you?
  8. You know you have to set the constant buffer and apply it to a slot for the shader? Show that code if you are already doing it.
  9. What is the displacement for? If you are generating terrain then choice of normal is a big deal because you can end up with collisions. I talk about it a bit here: http://www.socoso.com.au/Tiogra/Index.html?page=Displacement/normals.html I talk specifically about my engine so it's not all generic.   As for division, tessellation does the heavy lifting for you if you are prepared to commit. For pregenerated terrain, I used to use quad tree terrain with a displacement algorithm but that was part CPU part GPU, you might be able to do it all in compute these days I don't know.
  10. There's a lot of things that can go wrong. Start with the basics like is the mesh scaled and rotated the same as the armature at identity and are the bone heads where you expect them to be?
  11. Have you tried using b instead of cb?      cbuffer Standard : register(b0)    {        };
  12. It's common practice to not have intersections like that, you would 'stitch'. This is height map based but the need to stitch is the same. Every big triangle has subdivisions to match the smaller neighbours. If you just moved the smaller ones to be in line with the big triangles there would be errors like you describe  
  13. Hi,   I have been using a place holder model and have included some shots of it on my web site. I don't remember where I got the model from and don't want to tread on toes. Does anyone recognise the green alien at http://www.socoso.com.au/tiogra/mocap.html  
  14. I sort like this: http://www.socoso.com.au/tiogra/trees.html you could still render as meshes, I just pack em all for simplicity.
  15. Hi, A long hand version: PSIn MidPoint(PSIn a, PSIn b) { PSIn result; result.pos = (a.pos + b.pos) / 2.0f; result.tex = (a.tex + b.tex) / 2.0f; // project pos to the same radius as the other points here return result; } [maxvertexcount(8)] void GS(triangle PSIn input[3], inout TriangleStream<PSIn> triStream) { PSIn pointA = input[0]; PSIn pointB = input[1]; PSIn pointC = input[2]; PSIn pointAB = MidPoint(pointA, pointB); PSIn pointAC = MidPoint(pointA, pointC); PSIn pointBC = MidPoint(pointB, pointC); pointA.pos = mul(pointA.pos, viewMatrix); pointA.pos = mul(pointA.pos, projectionMatrix); pointB.pos = mul(pointB.pos, viewMatrix); pointB.pos = mul(pointB.pos, projectionMatrix); pointC.pos = mul(pointC.pos, viewMatrix); pointC.pos = mul(pointC.pos, projectionMatrix); pointAB.pos = mul(pointAB.pos, viewMatrix); pointAB.pos = mul(pointAB.pos, projectionMatrix); pointAC.pos = mul(pointAC.pos, viewMatrix); pointAC.pos = mul(pointAC.pos, projectionMatrix); pointBC.pos = mul(pointBC.pos, viewMatrix); pointBC.pos = mul(pointBC.pos, projectionMatrix); triStream.Append(pointA); triStream.Append(pointAB); triStream.Append(pointAC); triStream.Append(pointBC); triStream.Append(pointC); triStream.RestartStrip(); triStream.Append(pointAB); triStream.Append(pointB); triStream.Append(pointBC); triStream.RestartStrip(); } Using triangle strip just seems silly to me, I'd use list and it would make more logical sense but the above will work, you'd need to project the mid points to the sphere as well though. I stand by my original point that I think your order is incorrect, and add the second restart strip like I did.