Jump to content

  • Log In with Google      Sign In   
  • Create Account

Interested in a FREE copy of HTML5 game maker Construct 2?

We'll be giving away three Personal Edition licences in next Tuesday's GDNet Direct email newsletter!

Sign up from the right-hand sidebar on our homepage and read Tuesday's newsletter for details!


We're also offering banner ads on our site from just $5! 1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


razieliyo

Member Since 09 Oct 2011
Offline Last Active Sep 06 2014 01:41 PM

Topics I've Started

Physics system for a tilemap scenario.

05 September 2014 - 04:09 PM

I have an NxM grid in this scenario:

physcen.png

  • Blue blocks are the map
  • Red circles are enemies
  • Green circle is the player
  • Little magenta dots are bullets, both from the player and enemies.

Collision tests I would like to make are (if relevant):

  • Player vs enemies
  • Enemies vs enemies
  • Player bullets vs enemies
  • Enemy bullets vs player

I currently perform map physics by using the tilemap directly, but now I have to implement physics for entities, and thinking about options is getting me a bit mad. Current options for spatial indexing are a grid, with each cell being the same size as the current map or any other size, and a quadtree, for adaptative cell size.

 

The simplest option would be use a grid, so that's the one I would like to do in first place, but anyway, a few problems arise:

  • Since bullets are smaller than entities, cells may be a lot populated of bullets
  • The idea of having NxM linked lists overwhelms me. If the map were 300x300, 90000 linked lists.... anyway, a way to solve this could be to increase the cell size, but then, the previous point gains weight.

I guess the way to solve these two issues is to use a quadtree. I would go with the cell approach to see what happens, but still thinking that those are so much linked lists (one for each cell). I just wanted to have a little feedback on my concrete scenario, and let more experienced people tell how they would approach this. Maybe I'm overrating the cost of having so much linked lists and I should just go with it and try.

 

Another sub-question here is that if I want to handle collision tests separately, I think I should be using multiple data structures. Let's say, as player bullets won't collide with the player, I just don't need to check it, so I could make several data structures with proper entities on each, but if 1 grid with 90000 linked lists overwhelms me, I don't know how it would be with 90000 x 3 or 4.

 

Thanks in advance.

 

 

EDIT: re-thinking about it, the linked list thing is not as memory costly as I thought, since almost all of cells would be empty.


Free-to-use FPS for AI modding with strong C++ API. Linux.

17 May 2014 - 07:53 PM

I want to make a mod for an FPS, and I'm still thinking about which engine I should use. My target is AI modding (genetic computation and the like), and maybe a little more adding a class system. Concerning the engine to use, and afaik:

  • IDTech4 is well organised and there's a lot of currently supported forks, so it's a viable option. There's also plenty of documentation about it.
  • Source engine is said to be not so well organised, but there's a lot of games made with it. Also, documentation seem to be good and plenty for it.

And that's it, I'm just wondering about which engine I should use before I start using one and have to make my way back and learn the other. Another point is Linux support, but both have this.

 

Cheers.


SDL color issues for per pixel collision.

12 July 2012 - 02:19 PM

Hi.

I'm trying to implement a per pixel collision function. I load the image with SDL_LoadBMP and then, set the transparent color with SDL_SetColorKey call. The next step is to store that key color with SDL_MapRGB inside a Uint32 (I think that matters for my issue). That member is which I'm going to use then to check if the pixel is "free" or not.

Everything seemed to fit, but I noticed that in the pixel array, the "free" color is, for example (magenta 0xFF00FF) 0xFFFF00FF, but the one that is created with SDL_MapRGB is 0xFF00FF. One more byte for the pixel array format, so I thought it was because of the alpha data that I missed when creating the transparent color with SDL_MapRGB. Tried with SDL_MapRGB and passing 255 or 0 as alpha argument.

Anyway, the problem persists. When I create the color with SDL_MapRGBA, the data stored is still 0xFF00FF, and the pixel array is 0xFFFF00FF.

Any idea about what's going wrong? Can it be a format issue? I've thought of discarding that 2 extra bytes with an AND bit operation, but don't know if it is very safe, and if it were, I don't think it's a good solution for my problem, there should be more sdl-color-format theory behind this.

MORE INFO: I'm accesing pixel array with, say:
// in constructor...
transparent = SDL_MapRGBA (255, 00, 255, 255); // also tried with alpha 0

// ..more code..
Uint32 *pix = (Uint32 *) surf->pixels;
// bla bla bla
if (pix[y*width + x] == transparent) return true;
to access pixel in (x,y) coordinates, maybe this is wrong, but don't really think so.

Thanks.

PARTNERS