Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 28 May 2013
Offline Last Active Jan 30 2014 01:58 AM

Topics I've Started

Implementing Color Palettes

28 January 2014 - 03:26 PM

Hey everyone,


Many earlier video games used color palettes that can change the color of an enemy, background, or etc. I've looked extensively online and couldn't find anything on how one might go about implementing this.


I'm making a 16-bit game using sprites and would like to be able to change the palette of enemies that'll act as variations of the original one (think: Beat 'Em Up games). I already have an idea of how I might do this: I would need separate sprites for each pallete and then simply select which sprite(s) I want to use. However, I feel there's a better way, one that developers back then used to save memory. They might've set the pixels that should be changed and have colors corresponding to each set of pixels, but this is just my speculation.


A good example of what I mean is when 1P and 2P select the same character in a fighting game like Street Fighter: the 2P character looks the same but simply has different colored clothing.


If anyone has any knowledge or experience in this subject, please let me know! Thanks in advance!

Matching the rotation of one object with another

02 September 2013 - 05:52 PM

Hey everyone! I implemented a way of drawing objects partially underwater, but an issue with rotation popped up.


How I do my drawing is I check the depth of the water and draw the top part of the object normally and the part submerged in water (height of the sprite - the water depth) separately. Since these two parts are often different sizes, rotating the object will cause both parts to rotate at different speeds, disfiguring the object.


What I need is a calculation that will change the submerged part's rotation to match with the rotation of the unsubmerged part. Think of two circles with one smaller and one larger. It will take the smaller one less time to complete a full rotation, so it won't be rotating in unison with the larger circle. I need something that, given the rotation value, will modify the smaller circle's rotation value and place it at the same point of rotation as the larger one (Ex. both circles will be at pi/2 rad in 3 seconds as opposed to the smaller circle reaching pi in 3 seconds and the larger one reaching pi/2 in 3).


Thanks in advance!

Tile Engine Trouble

29 July 2013 - 09:30 PM

Hello everyone! I have a tile engine that functions well, but right now it functions purely based off of an object's location. What I'm attempting to do is take the object's collision box into account so things look and function better (for example, touching a tile that blocks you with the right side of your sprite actually blocks you instead of letting you walk until it touches your location on the left of your sprite).


I got it to work for blocking objects, but unfortunately it breaks when you're already on top of a higher tile. An object will be on top of a tile and fall if the tile its location is at a lower height. The reason is I get the current tile an object is on, which takes solely the object's location into account and returns the tile based on that location. Right now all of my object locations are at the top-left of the sprites.


So in other words, I want to modify my current tile method so that it properly gets the current tile the object is at and doesn't allow the object to fall until its sprite is completely off the tile. These two functionalities seem to conflict, which is where I'm stumped on. Does anyone have any suggestions? Any help would be greatly appreciated!

Trading Hits

19 June 2013 - 03:51 PM

I'm not sure how many of you are familiar with fighting games, but most of them have this mechanic that players call "trading hits" which occurs when both players' hitboxes intersect each other's hurtboxes at roughly the same time. This causes both players to get hurt. You can see an example at 1:41 in this video: https://www.youtube.com/watch?v=UdieEUZ0-0I&t=1m39s


I want to implement something similar in my game. The problem I have right now is it checks for collisions between players starting with player 1, so if both characters tried hitting each other at the same time, player 2 would get hit first and player 1 would be unharmed because player 1 would have hit player 2 first.


I can fix this by having the hitboxes linger. However, it doesn't look good when someone gets hit right after using an attack that lasts for a good 2-3 seconds, causing another player that got in range of the attack to get hit despite a significant amount of time passing since the initial attacker got hit.


In other words, I need to somehow check for both characters getting hurt at the same time, and at the moment I can't think of a clean-cut way to do it. I suppose I can try and keep track of who hit who with which hitbox (there can be multiple active at one time, Ex. Multi-hit attacks), but that'll be a lot of unnecessary information to store considering I already have it all...


Does anyone have any suggestions for implementing such a mechanic? Thanks in advance!

Jumping on objects

08 June 2013 - 12:57 AM

Hello everyone! I currently have a tile engine in my game, so my characters can jump on and off different-leveled surfaces just fine. However, I want to extend this functionality to particular objects as generally as possible. Here's an example of a similar object:


Although the player does not jump on the drum (I couldn't find a video of someone doing it), the player is able to do so. The drum is breakable as well, but I'm fine with that part.


So my question is:


How can I do similar collisions without


1) Looping through all of X particular objects

2) The collision being specific to those particular objects (Ex. a barrel and an enemy machine will be different objects but have the same collision applied to them)


I've tried storing the height and location of the object in the tile itself upon creation, but it's not working so far and I feel there's a better way to do this.


Any help would be greatly appreciated!