• 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

1080 Excellent

About amrazek111

  • Rank
  1. Sure it can be done.  I assume you don't have control of the process that owns that handle, so what you'll be needing is 1) a strategy to get your own code running inside that process and 2) a strategy to find the device pointer once you're inside.   The simplest solution is a proxy DLL, which would cover both cases nicely.  Some helpful articles could be found by googling "DirectX hook proxy dll"
  2. You're going about this the wrong way. You can reduce the screen resolution and use your graphics at their current size, orscale your graphics up as part of the resource loading process rather than trying to scale the entire screen (or individual surfaces) on every frame, orscale your graphics up in whatever you're using to create them so that they're the correct size relative to your desired resolutionDoing any kind of pixel manipulation is going to be very slow in SDL1.2 so offload as much of it as you can into one-time processes performed at startup.
  3. You base the bullet's direction on the player's facing.  Turn bullet into a struct or class with the properties X, Y, and direction (or create yet another array for the bullet direction, though this is clunky).  When you shoot a bullet, copy the player's direction to the bullet's.  Then when you update bullet positions, use the bullet's own direction.   A cleaner way of doing this would to instead give each bullet a position and velocity vector (speed + direction) when fired.  Then there's no need for an if statement at all and bullets could travel in any direction.  Simply add the velocity vector (* elapsed time) to the bullet's position vector during each loop.
  4. Funnily enough I ran into this exact problem (and I mean exact) some time back.  Tunnels were represented by a connected graph.  The map itself was a plane made up by a fairly dense grid of vertices.  When a tunnel was added, I swept along the path from origin node to the new node, deforming the plane's vertices in a half-cylinder with a touch of randomness to avoid perfectly smooth walls and with a taper as it reached the end.  This was done gradually as ants arrived at the "dig" site to "grab" a small piece of dirt to haul it to the surface.   In my case I didn't need a collision mesh as ants would always take paths connected by nodes and never ventured outside of those paths.  You could create one as you constructed tunnels fairly easily though.   If you're looking for a two-dimensional solution, one easy way (and the way I started out initially with HGE before switching to Ogre3D) is to create two layers.  One layer represents "dug" tunnels, the other a "cover" layer showing dirt.  As you create tunnels, erase parts of the cover so that the bottom layer shows though.  I've actually got a screenshot of that version: [spoiler]   I went with two layers rather than blitting the dug texture in so that the "cover" dirt would still be able to occlude some objects in the scene, giving the appearance of depth and eliminating the worry that the ant sprite would have to fit entirely within the confines of the tunnel at all times. [/spoiler]
  5. Have you tried Super Meat Boy or Fez? 
  6. Nothing stands out to me at first glance.  Have you tried going through it line-by-line with a debugger?
  7. I didn't want to respond until I'd had a reasonable amount of time to test things out, since I'd only recently moved my folders.  Everything has been working fine, with one exception: some updates (specifically, those related to internet explorer) failed with error 80070011.  It turns out Windows 7 has some entries in the registry that need to be altered if you move your program files with a junction.  I found [url="http://www.vilkku.org/2010/02/05/how-to-fix-windows-update-error-80070011/"]this solution[/url] which solved those issues for me. 
  8. That's because whatever invalid input cin tried to convert into x's type is still in the buffer.  What's wrong with simply ignoring the remainder of the invalid input with cin.ignore()?
  9. It's a bit subtle.  http://www.parashift.com/c++-faq/istream-and-while.html   In a nutshell: your while loop continues until the user puts the stream into an error state, after which all attempts to extract data from it will fail until the error state is cleared.  After the loop, reset the stream's state with istream's clear() function (cin.clear() -- as cin is just an istream under the hood)   As an aside, you can still break things in the same way by providing invalid input for the first two cins.  For instance, typing anything that can't be cast to a double for the midterm or final grades will also put the stream into an error state and skip past the loop and your final cin.  It might be wise to check the stream's state after those to see if the user tried to input something invalid.
  10. Have you tried symbolic links?  I moved my Program Files directories off of my 32GB SSD successfully using them.    Edit: Using robocopy and the Windows 7 Repair command prompt*
  11. Is your image loaded successfully?  Right after img would be a good place to display SDL_GetError() if img turns out to be NULL.   Also: Don't assume you know the underlying pixel format.  For instance, on my computer your masks are wrong.  Just use the screen's format. SDL_Surface* img = IMG_Load("blocks.png");     if (!img) {         std::cout << "Error: " << SDL_GetError() << std::endl;         return -2;     } SDL_Surface* f1 = SDL_CreateRGBSurface(SDL_SWSURFACE,500,500,32,_screen->format->Rmask,                                                                     _screen->format->Gmask,                                                                     _screen->format->Bmask,                                                                     _screen->format->Amask); After that, blitting with the alpha transparency worked fine for me.
  12. It sounds like D3DXCreateEffect* might have failed and you're trying to access a NULL pointer. Did you check its return value?
  13. In the interest of a direct answer: that's a forward declaration wrapped in a friend clause.   class Foo {     friend Event; }; class Event {}; Compiler error - error C2433: 'Event' : 'friend' not permitted on data declarations     class Foo {     friend class Event; }; class Event {}; No problem!  Equivalent to:   class Event; class Foo {     friend Event; }; class Event {};   Apologies if this was obvious.  If your question has to do with why it's being used like that, I haven't the faintest idea.  It appears event, request and response are tightly coupled for some reason
  14. So it's already sorted by chunk, that'll do just fine.  What stops you from simply looping through the grass strips of the removed chunk and adjacent chunks and applying your chosen solution?    You needn't necessarily delete any offending grass strip*, either.  If you want all the strips to use exactly the same model and similar geometry, simply rotating or translating an existing strip a little bit to a new valid position might even work.   *on blocks adjacent to the removed one
  15. Isn't your grass sorted in some way already?  If you don't have some kind of paging* system in place you might run into performance constraints later if you wind up having a lot of grass   Edit: when I say paging I'm thinking octree or other spatial hierarchy