• 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

1308 Excellent

About markypooch

  • Rank

Personal Information

  • Location
    Rockford IL

Recent Profile Visitors

7587 profile views
  1. DX11

    I think, at least for D3D11, the biggest thing you can do is limiting the amount of state changes you make to the pipeline. This is usually accomplished by grouping meshes that have similar pipeline parameters. As for the QuadTree, is there perhaps a priming read you can do of the tree, get the information that you need from each node, and try to dispatch that to the GPU in one go? Obviously this will result in more app side processing of the scene, but you can than profile, and see if the end result is better. The goal is to keep the GPU busy, sending small piece meal workloads while you continually prepare the next list of commands on the CPU may result in the GPU being under-utilized The raw draw call in 11 is where a lot of things are resolved. From what I understand most of the deferred context calls are in fact deferred up to this point. So cutting those down will be a huge benefit (and of course other calls to the deferred context).
  2. This is looking better, and better. I really like the warm color pallet.
  3. The way i've done outline rendering before is to do an additional pass of the scene geometry. Enable front face culling, and in this particular pass's vertex shader you'd offset the vertice positions in the direction of the normal (making this secondary mesh layer larger). Than in the pixel shader you can keep it simple, and just return black or something. This should give you the outline you're looking for. You'll have to do additional checks, and calculations if you want the mesh the mouse is hovering above to be the only one that is outlined, like inverse ray projecting (picking). Here is the URL i've used before to implement it. It should be pretty easy to translate this from XNA to D3D. http://rbwhitaker.wikidot.com/toon-shader You can also do a sobel operation as a post-processing step to achieve an outline around your meshes. Though imho, it looks to clean for toon renders, but for selection outlining it might be perfect for you
  4. Trust me on this one. All technical books have errata. In this case I'm very much assuming the technical editor missed this. Add the '==' to that if condition, and you should see that error message box popup telling you that device creation failed.
  5. Here goes one problem if (d3ddev = NULL) { MessageBox(hwnd, "Error creating Direct3D device", "Error", MB_OK); return 0; } Use '==' to test for equivalancy. Which explains why you make it to the exception being thrown. I'm guessing this call is failing here. Make sure the values you are passing to this function are valid d3d->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &d3ddev);
  6. Well there are a few ways you can do this. One way is quite simply loop over the tiles performing bound tests based on the player position, and pass on the positional data stored in the player tile, and set that directly to the players pos. The other way is to just divide the pixel position of the player by the tile fixed height, and width like so x = 100 / 16 = 3 y = 100 / 16 = 3 This you can use as an index into the tilemap, or however you're storing this to get the positional data directly, and set it to the player. EDIT Ah, I misinterpreted. I thought you were looking to have player snapping to individual grid cells
  7. You could post it on Git. I always view these paste it things as just for sharing throw away code snippets, not for entire projects. In Visual Studio (I don't know what environment/IDE you're using) you can synch up with a Git repository, and commit your project, and it's directory structure. This makes it a lot easier for sharing, and even working with other devs (You can branch off the main project and work on smaller features in a way that won't destroy the build when something goes horribly wrong). I'd recommend creating an account if you haven't already: https://github.com/ I just think more people will be likely to dig through 11 source files in a nice repository than 11 separate hyperlinks.
  8. Happy Birthday, so whose the lucky guy who gets 18 punches :^)
  9. I was not a particularly big fan of this publication. I've bought all of his books since his 90C hit the shelves. My problem is from his DX11 book to his DX12 the whole thing felt hastily put together with D3D12 moreso appended to it, rather than a fresh re-write. (I think the editor even misses a few spots when changing references to D3D11 to 12 in some cliff notes O_o) However, for someone who has never owned his previous books, I think you won't gripe as much as I did about it. Though I was quite disappointed that he didn't delve into multi-threaded design in the advanced section. He shoos it off as something you can study about on your own, which fair enough, but it felt kinda cheap.
  10.   This is completely valid, it's called a default constructor since it requires no input from an end-user. However in that block of code you declared those variables in that constructor. Meaning once you exit the scope of that constructor, those variables will be tossed off the stack, along with their values. instead use the 'this' keyword to reference the object, and it's internal members.   The point for parameters for constructors is to give an end-user control of the variables of that object upon creation. This can be described as follows:     If you define that class to only have a default constructor, than I couldn't do the above during initialization. As a default constructor, the name "John Doe" is fine. But not every person has the same name, and it saves me some time to do just define some basic characteristics of a person right from the get go by using the constructor.  Though, worth noting. After the object is created, depending on the access qualifier of the member (If they are public), I can do this from a scope that has a valid reference to the object   Down the road you should also hear about Accessor Methods. Basically methods that's defined in a class that allow limited r/w capacity to a caller to a private member. But that's down the road.
  11.   I think it may be beneficial for you to really differentiate the difference between an object, and a class. A class, in simple terms, is the schematic of the behavior of the soon to be object you write in code. From the code above I can see the class in question supports being initialized into an object by either constructor depending on if two parameters are passed to it's constructor, or three.  (as you accurately observed in noting constructor overloading).   Here is where the magic happens. Your class in the scope of runtime is transformed from just a class to an Object in memory. Your class defined that two constructors exist, and you initialize the Object with the latter of the two that uses three parameters. So basically with that above constructor, not to get to technical, but those three arguments you passed from main are automagically copied over (Look up Calling Conventions if you want the juicy details of this stuff, though the JVM may have it's own rules), and essentially in runtime you get this with the object creation   Now to answer the earlier question, these parameters are for the members of the object when it is initialized, so that it can actually do something useful (At least in this case). Some objects don't require any data from the user during initialization, and some do. It really just depends on the design requirements.
  12.   Sounds like that recruiter may have been a recruiter for a bit too long, and has become out of touch with the industry. It's true that knowing C++ is a good thing, it's true that knowing the basics of memory management will carry you even still into the realms of writing better managed code. But just because some knows C++, doesn't mean they know how to code well with it.   It sounds like he's never been on our Code Horrors forum.     I respectively disagree. Once again it sounds as though this recruiter has never been put on a two day deadline to create an app that performs extensive AD automation. C++ compared to something like PowerShell/Python is a nightmare for these tasks. I'm sorry, it is. Different tools for different jobs. Just because your stuck on hammering a nail into the wall with a screwdriver doesn't make the screwdriver inherently a bad tool, it just makes you look like an idiot for using it for that purpose.      This is highly subjective. True C++ is a go to language for low-level tasks, but the recruiter makes the foolish assumption that this automagically equals delegation of an "important" workload. This is not always the case.     It also sounds like he's never used anything but C++   In summation, the last people you wanna quote are recruiters. Especially this one. C++ has it's purposes, as does Java, as does C#, and as does many other languages. It's legitimately sad to see a recruiter who is supposed to be bringing new blood into the industry has this attitude.
  13. Kinda in response to Shaarigan, I have to depart on that assessment of smart pointers. If I'm not mistaken the whole point of their existence is to acknowledge that things can, and do happen in a large enough code base (exceptions, most notably) that prevent the otherwise predictable flow control of the application reaching a method, or destructor that would otherwise perform the raw memory management. In response to OP, If the codebase is small enough, one option is just to 'Caveman' it. That is place a breakpoint at the point the application receives a QUIT message of some sort, and just step through the object deallocations. Obviously this can be very error prone, so I wouldn't recommend for any codebase of substantial size.
  14.   We all have morbid curiosity when idiots speak. I didn't read the articles, but I will make an argument based on the titles alone since that seems to have been the original championing point you made.  Kinda what spiro said, news sources that touch on extreme subjects, or radical viewpoints will always garner a lot of attention. A bit of a stretch but in the late 1930's it was almost impossible to turn on a radio in the US, and not hear Hitler ranting, and raving. People however, weren't tuning in for their daily fill of ideology, however, were tuning in for a morbid curiosity of a violent man who had enslaved most of Europe (And just a general fear that war would inevitably reach them). You will always have fringe groups. And as "Rational, and Intellectual" people we will always gravitate to paying attention to, and pointing at fringe groups, not because we support them in any way, shape, or form. But because we are genuinely intrigued how these group's came to the conclusions that they did.
  15. I'm in. My team name is Pooch & Friends, but I have no friends, so just Pooch.