Jump to content


Katuko

Member Since 11 Sep 2005
Offline Last Active Yesterday, 10:41 PM

Topics I've Started

BIONICLE Fighter

10 June 2011 - 10:58 PM

BIONICLE Fighter
Alpha version 8.0


Category: Platform fighting game
File size: 24.58 MB (ZIP)
GM version: GM8
Screen resolution: 1024 x 768
Changes resolution: No

Download link at the bottom of this post.
Click the thumbnails to see the full screenshots.


Introduction


From its start in late 2000 and to its almost-end in 2010, BIONICLE was one of my favorite series. I had, and still have, a great affection for the biomechanical beings that inhabit that universe. For years, I've wanted to create a large-scale game based on the series. I've tried – and failed – twice in the past due to lack of sufficient programming skill. But now I'm back and ready, and I've gotten quite far already.

For those of you who don't know about the BIONICLE series: Don't worry, I'll run down the basics below and try to avoid specialized lingo. :)


Character creation

Posted Image

The main characters of the series are called Toa. They are humanoid robots with certain organic elements, namely the muscles, lungs and brain. Each Toa wields an elemental power, which allows them to control, create and absorb that element. Toa also wear masks or helmets imbued with an additional power, like flight or x-ray vision. In this game, you will be able to select both your element and mask power, as well as picking a weapon from a wide selection. Some weapons have special powers of their own.

Posted Image
One of the fiercest enemy types the Toa have encountered were the Rahkshi: Primarily empty shells of armor controlled by a leech-like creature. Rahkshi have special powers of their own, most of them based on destruction or deception. Rahkshi can not absorb power from the environment like Toa can, nor can they use mask powers, but they make up for it with their their powerful attacks and ability to fly at will. If a Rahkshi chooses to carry a specialized staff imbued with their own power, they can increase their strength through that as well.


In addition to choosing between the two species and their many powers, you can also adjust the values of five different stats: Strength, vitality, dexterity, element and mind.
- Strength modifies the power of physical attacks and melee strikes.
- Vitality increases health and other related attributes.
- Dexterity determines run speed and jump height.
- Element modifies the power of special attacks.
- Mind relates to the amount of energy available as well as its recharge rate. Mask powers also benefit from the mind stat.


Current features

- Play as either Toa or Rahkshi.
- Customize your character's powers, equipment, stats and color.

- Toa elements: Fire, air, stone, ice, light, shadow, gravity, plasma, iron.
- Rahkshi powers: Disintegration, poison, fragmentation, hunger, chain lightning, teleportation.
- Mask powers: Shielding, levitation, speed, strength, invisibility, corrosion, regeneration, hunger.
- Weapon powers: Burn, freeze, disarm, chainsaw, laser shot, armor piercing, stat modifiers.

- Save your character to a file so it can easily be loaded later.
- Duke it out in a free-for-all on large maps.
- Battle AI enemies while you wait for the game's true purpose: Online multiplayer. ;)


Old gameplay video (version 7.2)




Screenshots

Character creation menu
Rahkshi firing off Chain Lightning
A Toa of Fire accidentally hitting himself with a fireball
Onua, Toa of Earth, joins the fight
Draining the energy of enemies with a Rahkshi of Hunger
Turning an opponent to ash with a Fire Staff
Unleashing the power of Shadow
Preparing to teleport away from danger

More screens coming very soon! Feel free to submit your own via post or PM. :)



Download (24.58 MB ZIP)

Posted Image

Posted Image



Credits
Main programmer and designer  -  Oskar A. Garshol (aka "Katuko")
Additional ideas  -  Various BZP members (thanks for your support!)
Main spriter  -  "InnerRayg" (BZPower)
Additional sprites  -  Various BZP members (exact list being worked on)
Interface graphics  -  Oskar A. G.
Music and sound effects  -  Various artists, sounddogs.com (list coming)
Game Maker 8   -  Mark Overmars and the YoYo Games team




Creature run animation needed

20 September 2010 - 04:22 PM

So there I was, implementing a proper weapon system in my new platform fighting game, when a past shortcoming struck me. I had no proper animations for certain actions. The sprite sheet I'm using is not 100% finished, and I'm simply not good enough to add the missing animations myself.
Therefore I turn to you, the GMC's graphics department, to help me out with this.

The humanoid characters ("Toa") have proper "run" frames, but the creatures ("Rahkshi") do not.

Posted Image

This is what I have. As you can see, the animation is rather atrocious and looks horrible when in play. So instead, Rahkshi players are "gliding around" for now, no matter what they do. It helps that the things can actually fly in the game, but it still looks silly and unfinished.
EDIT: I've made a better version myself, but I'm still not quite content.
Posted Image

All I need is a run animation for this creature. Please create it without the spines or weapon attached. They are both customizable in-game, and as such it would be easier for me not to have to separate them again. For the same reason, the body should not be twisted when the Rahkshi runs.
Also of note: There are lots of available weapons, but only three main types. They are: One-handed (sword, axe), two-handed melee (staff, spear) and two-handed guns.

I have stabbing and slashing animations, laser guns don't really need one. They will not have recoil anyways. If possible, it would be if I could get proper arm poses for the running-with-staff and running-with-gun modes.
But if you can just get the legs done, I could probably do the arm poses myself later.


I also need a "hurt" animation, like this one:
Posted Image
... except for Rahkshi.


So, to sum it up:

What I need: A run animation. If possible, with separate arm poses for nothing/melee, staffs and guns. Also, a short "hurt" animation.
Format: PNG with transparency would be nice, but a white background also works. JPG is accepted if saved at 100% quality.
Style: As the rest of the sprites.
Colors: The palette supplied.


If any of you are uncertain that this game will be done and that you are working for free for nothing, please see my topic on BZPower here to see the current game version.

Thanks in advance! :)

Merging sprites using surfaces

09 August 2010 - 11:03 AM

As some of you my remember from my previous topic about color blending, I am working on a platformer where I seek to make the character customizable in several different ways, like weapons, special powers... and more simply, color.
By splitting the sprite into several parts, I can easily color blend each part individually. There is one part for the primary color (body), one for the secondary (limbs), one for the parts that should not be colored, and one for the glowing eyes/brain.
Posted Image

All the sprite names are stored in an array for easy changing between "sets" to create different completed sprites. This works. Calling upon the "jump" set will properly set all the parts to their "jump" equivalent.
Unfortunately, splitting the sprites like this means that I cannot use basic effects as easily. For example: Simply alpha transparency. Applying alpha to a character drawn in parts will make overlapping parts (such as the eyes/face and held items) appear more opaque than the rest.
Upon death I also want a "rag-doll" of sorts to appear, with the character's current look in a hurt pose. This "rag-doll" should then be able to be modified for different visual death effects. This is hard to when you have to apply the effects to 4+ different sprites at a time.

Therefore, I wrote myself a relatively script:
When a player dies a surface is created, where the sprite parts are drawn with the correct color blending, fully opaque. A new sprite is then created from the surface and applied to the rag-doll, which now don't need to worry about the parts and can just do its effects as needed. When the rag-doll is destroyed, it deletes its sprite as well, preventing them from piling up after lots of deaths.
I have thought about simply letting every player object pre-create such a sprite at the start of the round to prevent possible stutters during death, but that's not really the problem here.

The problem, which I'm sure you're dying to know by now (I can be quite wordy), is as follows:
When a player dies, the ragdoll appears... but it's missing large chunks. In fact, the only thing that can be seen is a few pixels that are clearly in the shape of the "shine" layer, which is the last one drawn.
I believe I have crashed into a known problem of surfaces: Any alpha value will overwrite the last. So first my "body" sprite is drawn, then the limb sprite overwrites it. This keeps going until the last one.
I have tried various blend modes to remedy this, such as bm_add, but to no great effect.

How can I combine the layers via a surface to create the final sprite shown above when each new layer seems to overwrite the last?

Blend modes and color mixing

15 July 2010 - 02:55 PM

First I want to direct a thanks to this Advanced topic, which has helped me visualize the effects of several blend modes.
Unfortunately, I still need a specific color blend effect which I have been unable to achieve.

I am using the standard practice of having a black-and-white sprite which is then blended via image_blend or draw_sprite_ext() to make it appear in different colors. This is great for things such as team flags, character design, etc. In fact, my main goal is to let the player choose the main colors of his or her character. Nice and simple.
But these sprites are rather small and were designed to use a color palette rather than blending. Basically, each sprite needs a main color, a darker shading color, an outline color and finally a color for the lighter parts. This is the problem. When the sprite is in black and white, pure white becomes the "shine" color while the "normal" one is a medium gray. When blended with pure red, the white becomes red and everything else darker. That is, the "main" color becomes too dark and there appears to be no shine.

Here's a visual example:

Posted Image

1. Normal sprite
2. Grayscale / black-and-white
3. Color blended with Multiply (Game Maker blending)
4. Blended with Additive
5. Color Burn
6. Overlay

As you can see, the grayscale sprite already loses some detail right there, but darker shades of gray will further muddle the colors. Is there a blend mode that will let me increase the contrast between the brightest shades of a color yet not brighten the rest too much?

Drawing A Textured Arc

04 March 2010 - 08:05 AM

So I like to think that I know how to do most GML-related stuff, but I'm pretty stumped when it comes to calculation of shapes and advanced surface distortion stuff.
I'm currently programming a TDS, and one of the weapons I want implemented is something akin to the early GTA's taser and the Metroid series' Shock Coil (actually, it is the Shock Coil). In short, the weapon locks on to the nearest enemy and hits it with multiple lightning bolts.

I've already totally stole a script off of an old topic on this board, where I then got the formula for drawing an arc. This works. I added the "draw_spline" script to my lightning gun, and I can see the arc run from the tip of the gun to the enemy, and the enemy loses HP and sends out spark particles. So far, so good.
But then I tried adding a texture to the arc, and messed up. I've been trying different primitive types and moving the calculations around for a while, but I'm stuck. I just don't understand how the primitives are drawn, I think.

Here are the scripts:

draw_spline_tex
//draw_spline_tex(x1,y1,x2,y2,x3,y3,sprite,subimg,steps,directio
n);

var x0, y0, x1, y1, x2, y2, tex, steps, px, py, w, d;
x0 = argument0;
y0 = argument1;
x1 = argument2;
y1 = argument3;
x2 = argument4;
y2 = argument5;
tex = sprite_get_texture(argument6,argument7);
steps = argument8;
w = texture_get_height(tex);
d = argument9;

// If no steps given, pick a default value:
if (steps == 0)
{
   steps = 20;
}

var tx0, ty0, tx1, ty1, alpha;
px = x0;
py = y0;
draw_set_color(c_white);
draw_primitive_begin_texture(pr_trianglestrip,tex);
draw_vertex_texture(x0+lengthdir_x(w/2,d),y0+lengthdir_y(w/2,d),0,0);
draw_vertex_texture(x0+lengthdir_x(w/2,d+180),y0+lengthdir_y(w/2,d+180),0,0);
for (i=1; i<=steps; i+=1)
{
	alpha = i/steps;

	tx0 = x0 + (x1 - x0) * alpha;
	ty0 = y0 + (y1 - y0) * alpha;
	tx1 = x1 + (x2 - x1) * alpha;
	ty1 = y1 + (y2 - y1) * alpha;
	
	global.spline_x = tx0 + (tx1 - tx0) * alpha;
	global.spline_y = ty0 + (ty1 - ty0) * alpha;
	d = point_direction(px,py,global.spline_x,global.spline_y);
	draw_vertex_texture(global.spline_x+lengthdir_x(w/2,d),global.spline_y+lengthdir_y(w/2,d),alpha,0);
	draw_vertex_texture(global.spline_x+lengthdir_x(w/2,d+180),global.spline_y+lengthdir_y(w/2,d+180),alpha,1);
	/*draw_line(px, py, global.spline_x, global.spline_y);
	draw_circle(global.spline_x,global.spline_y,2,false);*/
	px = global.spline_x;
	py = global.spline_y;
}
draw_primitive_end();
The commented part of the code is the original, I just added the circles to see where the points on the arc were.

Draw event:

var dist, xx, yy;
dist = point_distance(x,y,target_x,target_y)/2;
xx = x+lengthdir_x(dist,direction+20-irandom(41));
yy = y+lengthdir_y(dist,direction+20-irandom(41));
draw_set_alpha(image_alpha);
draw_spline_tex(x,y,xx,yy,target_x,target_y,spr_lightning,iran
dom(10),20,point_direction(x,y,xx,yy));
draw_set_alpha(1);


I believe that the problem is that I'm either using the wrong primitive type, or I'm setting the points the wrong way. Possibly both.
The sprite I'm using is 64x16, so it's a power of 2 and shouldn't be the problem, right?