• 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.

tool_2046

Members
  • Content count

    150
  • Joined

  • Last visited

Community Reputation

1990 Excellent

About tool_2046

  • Rank
    Member
  1. Truth is there's a good chance you'll use little of that in practice, but all of it is worth learning. Take the classes that interest you the most and research the rest on your own time. 
  2. Wouldn't that only end up rendering the edges rather than filling them? Or have I misunderstood?     Yeah, you are right. You need to use the stencil buffer to get an accurate in/out voxel model. Basically, I'm thinking of the voxelization described near the bottom of section 30.2.4 here:   http://http.developer.nvidia.com/GPUGems3/gpugems3_ch30.html
  3. This is probably massively out of date, but can you adjust clip planes to render to slices and use the slices to build the voxel representation? Basically fix a camera on an axis, create clip planes that clip out everything above and below a predetermined thickness, then write out to a slice?
  4.   Could it be lack of self-shadowing and maybe not using exponent on the noise, which is creating very wispy looking clouds in your screenshot? Though obviously sometimes wispy clouds are desirable, they often don't look very volumetric.   My go to resource for cloud rendering is a rather old thread here on gameDev by Yann-L, sadly the pictures are all missing now, but they looked impressive at the time and i'm pretty sure the techniques are still in use today. Though the site redesigns have made the posts harder to follower (quote blocks seem to have been lost and so a reply and quote all flows together), there is still plenty of good information to be found in Yann's posts, probably worth a read.     Yann's work was pretty amazing. These days this is probably the best paper I've seen on sky rendering: http://www.hpi.uni-potsdam.de/fileadmin/hpi/FG_Doellner/publications/2012/MED12/paper_1056_cr.pdf   Here's the video: https://www.youtube.com/watch?v=t8ibsEl0kAI   The clouds are based on a Game Programming Gems article that traces rays through a heightfield. The results are pretty convincing. 
  5. I think I'm misunderstanding you. I thought the complaint with how OBJ's store vertices is that there's separate lists for positions, normals and texture coordinates. By "collapse them down" I mean make a single vertex list where each vertex has a position, normal and texture coordinate, and a single index buffer that indexes into that list. 
  6. Alright, my apologies. I don't disagree that using a single vertex and index buffer per subset is better than using one per positions/normals/texture coordinates. I do disagree that collapsing vertices and indices down is difficult. Identifying unique vertices is a matter of looking at the triplet of indices specifying a vertex.    Like I said, your game probably isn't going to be using any standard format natively. If you just want to load in a standard model file to mess around, writing an OBJ loader is quick to do. I honestly thought it was pretty fun and educational. Could your time be spent better elsewhere? Probably, but it's not like you are wasting a month trying to convince Collada or something to load. assimp is a fine solution. But if you want to spend a day or so, you can write an effective OBJ loader.
  7.   I agree on some levels, but I see a few good reasons for writing an OBJ parser.   For starters, it's easy. Probably the easiest model format I've dealt with. There isn't a whole lot of variation you'll encounter between exporters (watch out for negative indices!) and it will support static meshes pretty well.    It's also widely supported in modeling applications. There aren't many modeling applications that do not support OBJ, and again, you aren't hitting COLLADA style variations here.   The data is generally organized well and easily translates to graphics APIs. No, you aren't getting shaders here. Yes it's not binary. In my experience though, you are likely writing your own format, complete with your own exporters from whatever application you are using. OBJ may be less efficient, but it's a good starting off point. 
  8. OpenGL

    If you don't care about perfect depth sorting, but do want a rough depth sort (good for opaque, not so good for translucent), you can definately quantize it to some smaller amount of bits. e.g. quantized = depth/maxDepth * 2numBits-1     If you need to be able to recover the original 32-bit index, there's no way to do this. You need to use 16-bit indices to begin with. If you don't need to be able to recover the original values, there's many ways, including hashing. A very simple hash that I sometimes use is just: hashed = ((original >> 16) ^ original)&0xFFFFU;   Speaking of recovering original values -- there's two design choices here: 1) You design your render queue so that from a large sorting key (e.g. 64-bits) you can extract all sorts of state information of how that object should be rendered. You can extract materials ID's, geometry ID's, shader ID's, etc, etc. 2) You treat the sorting key as just a binary lump of data that's only used for sorting and nothing else. You store render-state information elsewhere.   Both methods have their merits. To offer another point of view though, I personally chose #2. The objects in my render queue look kind-of like: { u32:key, u32:drawCallData, u32:numStateGroups, StateGroup[]:states } Each item contains the data that will be used to make the draw-call, and then it contains a variable-sized list of state-group pointers. A state-group then contains actual render-states, like commands to bind textures, buffers, shaders, etc...   The sort key is only used for sorting; no data is ever extracted from it. Different high level rendering systems can then populate it in whatever way they need to. If translucent and opaque objects are going to be put into the same queue, then the most-significant-bit can be used to define which one of these passes the object should appear in. Opqaue objects could then follow this with an 8-bit shader hash, whereas translucent objects could follow it with a 24-bit depth value, etc...   Hodgman has once again done a great job of explaining, and I have little to add. Here's the first source I saw suggesting this though: http://realtimecollisiondetection.net/blog/?p=86
  9.   That's very compelling. Is there a video or something to accompany it? I can't quite follow how they're doing that from the slides. I Googled the guy's name a bit but could only find the slides.     I don't know of video for the slides, and this suggests it was lost:   http://directtovideo.wordpress.com/2012/03/15/get-my-slides-from-gdc2012/   I haven't dug through the GDC Vault to see what there is though. 
  10. Maybe not what you are looking for, but this a pretty good presentation:   http://directtovideo.files.wordpress.com/2012/03/gdc_2012_released.pdf
  11.   To be honest, I seriously dislike replies like this. There are plenty of reasons why someone won't find "obvious" research and the whole lmgtfy just wreaks of unnecessary arrogance. Man up and give the guy a link or two, or don't bother responding.    On that note, check out the GPU Gems chapter on this:    http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter02.html   There are better ways of handling things these days. If you are using D3D11 look into using tessellation. If you are using D3D11.2 there's hardware support for virtual textures. 
  12. Can't you just use a ray cast and count intersections? Odd = in, even = out? Maybe I don't understand the question, but see here:   http://en.wikipedia.org/wiki/Point_in_polygon#Ray_casting_algorithm   Should work fine for 3D as well, assuming your mesh is water tight.
  13.   This is interesting and much better than what I proposed as it avoids the costly segment vs segment intersection tests.  Do you know what it's called?   Sounds like gift wrapping to me: http://en.wikipedia.org/wiki/Gift_wrapping_algorithm
  14. What you are trying to do is called screen space ambient occlusion (SSAO). There's a lot of resources out there for this, and more advanced variants of it. Here's a good starting point: http://www.iquilezles.org/www/articles/ssao/ssao.htm