• 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

572 Good

About xEricx

  • Rank
    Advanced Member

Personal Information

  1. [quote name='Spa8nky' timestamp='1303772298' post='4802856'] [quote name='IADaveMark' timestamp='1303772077' post='4802853'] If the distance to the object is farther, your rate of turn can be slower. [/quote] but the jerky movement still occurs with a slower turn rate, as shown in the last video. Could the following line cause a problem: [code] avoidance -= agent.Velocity; [/code] I ask because it is not included in the OpenSteer source code but causes the agent to move way too fast without it. [/quote] Well, steering shouldn't make you accelerate over your maximum velocity. Everytime I've written a steering component (it's been a while though, so I might be missing some details) I made it return 2 things: 1) heading 2) braking factor The braking factor can be optional, depending on the feel you want to have. In the examples you showed, you just need to modify the heading of your cube. If I understand correctly in the code you posted destForward is steeringForce? If so, from what you posted you only use it to calculate a turn angle, how would it make the agent move way too fast? Have you tried clamping your velocity to your max velocity?
  2. It's always fun to "reinvent the wheel", but you can use existing "wheels" as a reference. Check out OpenSteer, it solves the dynamic avoidance problem and way more: http://opensteer.sourceforge.net/ Cheers
  3. [quote name='BB1995' timestamp='1302630681' post='4797588'] Google it? lmao...Why don't you Google it and show me the answers, buddy? Anyways, I need, more specifically, AI help for a tic tac toe game in a Console App using C++. Please elaborate and is the same logic behind AI in simple Console Apps the same sort of logic behind AI in massive 3-D complicating games? Point being, are they somewhat following the same lines of logic to perform different things? [/quote] By asking such a broad question you had to expect broad answers... AI is concepts, so the type of code it's being developed for doesn't change a thing... As for massive 3-D complicating games?! well, it all depends on the game and which needs the project has. I guess a Massive Multiplayer Online Tic Tac Toe game would have the exact same AI your Console App can have, if you figure out how to search on the internet how to develop something as simple as TTT AI in the first place...
  4. Probably because the name sounds cool, like genetic algorithms
  5. The most simple book I've seen on this topic must have been Mat Buckland's AI Techniques for Game Programming You can start by giving his website a look: http://www.ai-junkie.com/ann/evolved/nnt1.html Hope this helps
  6. Keep it simple... like ApochPiQ suggested, go with splines or simple steering behaviors. Unless you're aiming to create a fly flight simulator, I don't think you have too much time to waste on this.
  7. This sounds a bit simple for a scripting engine. If you want examples of "professional" use of Lua, if I remember correctly WoW uses it for all of its plug ins... also the Far Cry PC [b]demo[/b] shipped with all the scripts available in a zip file (I'm pretty sure it's a mistake)... but you can still check out how they handled things. See it more as inspiration than as a tutorial.
  8. [url="http://ipad.headlinestimes.com/ipad-ipod/iphone-sdk-tutorial-drag-able-image-uitouch/"]http://ipad.headline...-image-uitouch/[/url] 3rd or 4th link on google, please do your homework
  9. [quote name='ms75214' timestamp='1300301684' post='4786682'] i want to make a fingerpaint app for ipad. can someone tell me how to detect a drag event on ipad? i basically need to get these for the drag event startx starty endx eny [/quote] I never developed for iOS but this should be one of the basic event you can handle and it's for sure in the documentation... did you search for more than 30 secs before posting here?
  10. In this case it's easy to see that they're using predefined spawning patterns following paths. You can spot that by the fact that every time the level is played, the same thing happens, there is no variation whatsoever, and the way the player moves doesn't affect what the enemies are doing. The only "decision making" there is where to fire...
  11. You have no speed or storage advantage in not using a contiguous block of memory. Simply wrap it with accessors that return [x + y*width] and you'll be easily be able to access it with x and y... I don't see why you need a 2D array.
  12. [quote name='yewbie' timestamp='1299776429' post='4784050'] In the past I have been using a 2 dimensional array to store my map structure like so: struct MapInfo { int tile; int blah; } MapInfo MyMap[x][y]; I want to try to move this into a class so I can easily pass around a pointer to a specific location to various classes that would need it, I started with this, but I cannot figure out how to insert and access the locations properly, I think it may just be too early for me to wrap my mind around what im doing. Below is sort the route that I was trying to go, but as you see the way X and Y map locations are added, (and accessed) I can't figure out a way to add them in the correct order to my vector, and then be able to access them correctly by just specifying a x and y location. I know my logic as below is completely flawed but I figured posting what I was trying to do would make more sense than explaining it, thanks!! Map.h [code] #ifndef MAPCLASS #define MAPCLASS /*------------------------------------------------------------------------------------------------- */ /* this class Deals with our map data */ /* */ /*-------------------------------------------------------------------------------------------------*/ #include <vector> #include <iostream> using namespace std; class MapTile { public: int x; int y; int iCurrentTileGraphic; //Tile in this location int iOriginalTileGraphic; //this was the tile we started with (for animation) int Lighting; //Lighting value associated with this tile int Alpha; //Transparency value bool Blocked; //If this tile is blocked or not }; class MapInfo { private: vector <MapTile> TileLoc; //this stores all of our map info public: MapTile* GetMapLocPtr(int X, int Y); void CreateMap(int Xsize, int Ysize); //Creates a map with X*Y size }; #endif [/code] Map.cpp [code] #include "Map.h" MapTile* MapInfo::GetMapLocPtr(int X, int Y) { int TileNum = X * Y; //get our tile location (problem here) if(TileNum < (int) TileLoc.size() || TileNum < 0) //make sure its in bounds { return &TileLoc.at(TileNum); } else //else this is out of range { cout << "Tried to access a out of range map location: " << X << " - " << Y << " = " << TileNum << endl; } return NULL; } void MapInfo::CreateMap(int Xsize, int Ysize) //Creates a map with X*Y size { int MapSize = Xsize * Ysize; //get our tile location TileLoc.reserve(MapSize +1); //reserve enough memory space for(int x=0;x<Xsize+1;x++) //(problem here) { for(int y=0;y<Ysize+1;y++) { MapTile NewTile; NewTile.Alpha = 0; NewTile.Blocked = false; NewTile.iCurrentTileGraphic = 0; NewTile.iOriginalTileGraphic = 0; NewTile.Lighting = 0; NewTile.x = x; NewTile.y = y; TileLoc.push_back(NewTile); //add to struct } } cout << "Created map with: " << MapSize << " Members" << endl; cout << "TileLoc contains: " << TileLoc.size() << endl; } [/code] [/quote] Part of your problem (i didn't read the entire code) is that your TileNum should be something like X + Width * Y; Also, when you reserve your array you can then simply index it so when adding new tiles you'd use the same X + Width(Xsize) * Y to access elements of your vector. Hope this helps
  13. [quote name='IADaveMark' timestamp='1299722181' post='4783819'] You can do far better with hand-crafted rules with tunable parameters. [/quote] Exactly... and most Game Designers, as you stated, want to keep control over the NPCs so for most "professional" games, it's not an option. As for your point about "dumb opponents", keep in mind that most studios would let QA play with the game for a while, and package with the game whatever data came from this learning phase, so they would probably start off as quite good opponents. It's just too risky to rely on learning for a production that costs millions...
  14. [quote name='Storyyeller' timestamp='1299604686' post='4783188'] Are macro style functions and constants actually good for anything in C++? It seems like anything they do can be done better with actual constants or templates. The only reasonable use I've seen is Boost Foreach, and that's obsolete as of C++0x. [/quote] Avoid macros where possible.
  15. If I can suggest something, as rip-off said, use a std::vector... but most importantly, use a data driven approach to place your enemies. XML could be a good option (check Tiny XML, that's quite easy to use)... I know this might not be "beginner friendly", but you'll see the benefit quite soon You'll be able to use your XML for many more settings and it will be easier when you'll decide to configure your Enemies (sprite, behavior, etc...) Hope this helps