Taizen Chisou vs. Progress

Posted by Taizen Chisou on May 14, 2012, 8:56 p.m.

Edit:

Screenshots!

It seems as though as much as I enjoy adding things to my game, the more spiteful I get to the individual pieces of code because I'm constantly leaving them unfinished to start on something else.

So far, I have the following:

A basic cutscene handler (The test cutscene initiates a battle)

Text engine with colors and effects (<3 Juju)

Moving around game world

Enemy database framework

Very, very, very basic enemy AI (Follows you and tries to attack)

Pause menu, displays detailed information for leader and basic information for friends

Skill trees are in place, you can't yet learn from them though

Enemies can die, and they give you EXP and everything (Their dying animation even has them flying back and stuff on a Z axis!)

Sprite sheets for three characters

Attack scripts for two

Interaction handling for when you press the attack button on the overworld (but no indication of what you can interact with, I should add that to match Dueplin :V )

The HUD works, number effects work

You can block enemy attacks (But if you're facing the wrong way it won't work!)

I'm going to be working on the following soon:

Inventory

Equipment

Learning skills

Using skills

Customizable command decks (See below)

More advanced and flexible enemy AI

Question functionality in textboxes

Gun weaponry actually functioning like guns and not like swords

Being able to die and being prompted to switch characters when it happens

The battle pause menu (opposed to the world pause menu)

The command decks are basically where you're going to keep the character's skills any appointed items for use in battle.

I would probably add, like, potions, status effect items, and Almighty Fire Blast Of Motherfuckin' Death to it, and use the C button to navigate it and to use whatever in it is selected.

I'm doing this opposed to scrolling the list of magic spells available to your character, to emphasize "strategy" and to legitimize the use of items in battle.

Debating with self about what size this should be. You only learn ten spells each, and there's a whole mess of useful items that you can use.

Perhaps six slots.

And I think that's about it!

If I come up with more, then I'll save it for another blog.

Comments

Taizen Chisou 12 years, 7 months ago

Updated actually with screenshots this time :V

Castypher 12 years, 7 months ago

This sort of thing might work well with a skeletal animation system.

Taizen Chisou 12 years, 7 months ago

I'm not going to the hassle of animating the character's limbs like I did in that animation engine :V

Information about object: object0

Sprite: <no sprite>
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Create Event:
execute code:

accel = 0.2

go1 = 0
go2 = 0

//Individual parts:
// Head, arms, legs, hands, feet

// Head rotation, head angle, head scaling
//// Head subparts: Eyebrows, eyes, mouth
////// Eyebrow height, eyebrow scaling
////// Eye position, blinking (yes/no), eye scaling
////// Mouth position, mouth type
// Arm rotation, scaling, angle
// Forearm rotation, scaling, angle
// Hand type, rotation, scaling, angle
// Leg rotation, scaling, angle
// Foreleg rotation, scaling, angle

inc = 0

global.body_angle = 1
// 0 = Profile
// 1 = 3/4
// 2 = Head on
// 3 = 3/4 (backside)
// 4 = Away

global.all_body_scaling = 1
//All scale values multiplied by this
//All distance values multiplied by this as well as individual scales

global.all_body_rotation = 0

global.head_pos_x = 0
global.head_pos_y = 0
global.head_scaling = 1
global.head_rotation = 0

global.eye_type = 1
global.eye_pos_x = 0
global.eye_pos_y = 0
global.eye_scaling = 1

global.eyebrow_type = 1
global.eyebrow_pos_x = 0
global.eyebrow_pos_y = 0
global.eyebrow_scaling = 1

global.arm_length = 61

global.left_arm_pos_x = 0
global.left_arm_pos_y = 0
global.left_arm_rotation = 0
global.left_arm_scaling = 1

global.right_arm_pos_x = 0
global.right_arm_pos_y = 0
global.right_arm_rotation = 0
global.right_arm_scaling = 1

global.left_forearm_pos_x = 0
global.left_forearm_pos_y = 0
global.left_forearm_rotation = 0
global.left_forearm_scaling = 1

global.right_forearm_pos_x = 0
global.right_forearm_pos_y = 0
global.right_forearm_rotation = 0
global.right_forearm_scaling = 1

global.left_hand_type = 1
global.left_hand_pos_x = 0
global.left_hand_pos_y = 0
global.left_hand_rotation = 0
global.left_hand_scaling = 1

global.right_hand_type = 1
global.right_hand_pos_x = 0
global.right_hand_pos_y = 0
global.right_hand_rotation = 0
global.right_hand_scaling = 1

global.leg_length = 61

global.left_leg_pos_x = 0
global.left_leg_pos_y = 0
global.left_leg_rotation = 0
global.left_leg_scaling = 1

global.right_leg_pos_x = 0
global.right_leg_pos_y = 0
global.right_leg_rotation = 0
global.right_leg_scaling = 1

global.left_foreleg_pos_x = 0
global.left_foreleg_pos_y = 0
global.left_foreleg_rotation = 20
global.left_foreleg_scaling = 1

global.right_foreleg_pos_x = 0
global.right_foreleg_pos_y = 0
global.right_foreleg_rotation = 20
global.right_foreleg_scaling = 1

global.left_foot_pos_x = 0
global.left_foot_pos_y = 0
global.left_foot_rotation = 0
global.left_foot_scaling = 1

global.right_foot_pos_x = 0
global.right_foot_pos_y = 0
global.right_foot_rotation = 0
global.right_foot_scaling = 1

 Step Event:
execute code:

inc += accel



if x < -100
x = 800

if go1 = true
{
global.all_body_scaling = 1+0.8*sin(inc)
global.left_leg_rotation = 30+30*sin(inc)
global.right_leg_rotation = -30-30*sin(inc)
global.left_arm_rotation = 30+30*sin(inc)
global.right_arm_rotation = -30-30*sin(inc)
}

if go2 = true
{
global.all_body_rotation += 3
global.left_arm_scaling = 1+sin(inc)
global.right_arm_scaling = 1+sin(inc)
global.head_pos_x = 40*sin(inc)
global.head_pos_y = 40*cos(inc)
}

Draw Event:
execute code:


//////////////////////Right arm

incx = x + global.right_arm_pos_x + ((global.all_body_scaling * 30.4) * cos(degtorad(global.all_body_rotation-(pi/2))+2.22))
incy = y + global.right_arm_pos_y - ((global.all_body_scaling * 30.4) * sin(degtorad(global.all_body_rotation-(pi/2))+2.22))

draw_sprite_ext(arm,-1,incx,incy,global.all_body_scaling*global.right_arm_scaling,global.all_body_scaling*global.right_arm_scaling,global.all_body_rotation+global.right_arm_rotation,c_white,1)
draw_text(incx,incy,"RA")

offx = ((global.all_body_scaling * global.right_arm_scaling * global.arm_length) * cos(degtorad(global.all_body_rotation+global.right_arm_rotation)-(pi/2)))
offy = ((global.all_body_scaling * global.right_arm_scaling * global.arm_length) * sin(degtorad(global.all_body_rotation+global.right_arm_rotation)-(pi/2)))
incx = incx + global.right_forearm_pos_x + offx
incy = incy + global.right_forearm_pos_y - offy

draw_sprite_ext(forearm_or_leg,-1,incx,incy,global.all_body_scaling*global.right_forearm_scaling,global.all_body_scaling*global.right_forearm_scaling,global.all_body_rotation+global.right_arm_rotation+global.right_forearm_rotation,c_white,1)
draw_text(incx,incy,"RFA")

//Right hand



////////////////////Right leg


incx = x + global.right_leg_pos_x + ((global.all_body_scaling * 37.4) * cos(degtorad(global.all_body_rotation-(pi/2))+4.46))
incy = y + global.right_leg_pos_y - ((global.all_body_scaling * 37.4) * sin(degtorad(global.all_body_rotation-(pi/2))+4.46))

draw_sprite_ext(forearm_or_leg,-1,incx,incy,global.all_body_scaling*global.right_leg_scaling,global.all_body_scaling*global.right_leg_scaling,global.all_body_rotation+global.right_leg_rotation,c_white,1)
draw_text(incx,incy,"RL")
offx = ((global.all_body_scaling * global.right_leg_scaling * global.leg_length) * cos(degtorad(global.all_body_rotation+global.right_leg_rotation)-(pi/2)))
offy = ((global.all_body_scaling * global.right_leg_scaling * global.leg_length) * sin(degtorad(global.all_body_rotation+global.right_leg_rotation)-(pi/2)))
incx = incx + global.right_foreleg_pos_x + offx
incy = incy + global.right_foreleg_pos_y - offy

draw_sprite_ext(forearm_or_leg,-1,incx,incy,global.all_body_scaling*global.right_foreleg_scaling,global.all_body_scaling*global.right_foreleg_scaling,global.all_body_rotation+global.right_leg_rotation+global.right_foreleg_rotation,c_white,1)
draw_text(incx,incy,"RFL")
///////////////////Right foot


offx = ((global.all_body_scaling * global.right_foreleg_scaling * global.leg_length) * cos(degtorad(global.all_body_rotation+global.right_leg_rotation+global.right_foreleg_rotation)-(pi/2)))
offy = ((global.all_body_scaling * global.right_foreleg_scaling * global.leg_length) * sin(degtorad(global.all_body_rotation+global.right_leg_rotation+global.right_foreleg_rotation)-(pi/2)))
incx = incx + global.right_foot_pos_x + offx
incy = incy + global.right_foot_pos_y - offy

draw_sprite_ext(foot,-1,incx,incy,global.all_body_scaling*global.right_foot_scaling,global.all_body_scaling*global.right_foot_scaling,global.all_body_rotation+global.right_leg_rotation+global.right_foreleg_rotation+global.right_foot_rotation,c_white,1)
draw_text(incx,incy,"RF")


////////////////////Body

draw_sprite_ext(body,-1,x,y,global.all_body_scaling,global.all_body_scaling,global.all_body_rotation,c_white,1);
draw_text(x,y,"Body")
////////////////////Head


incx = x + global.head_pos_x + ((global.all_body_scaling * 32) * cos(degtorad(global.all_body_rotation-(pi/2))+1.57))
incy = y + global.head_pos_y - ((global.all_body_scaling * 32) * sin(degtorad(global.all_body_rotation-(pi/2))+1.57))

draw_sprite_ext(head,-1,incx,incy,global.all_body_scaling*global.head_scaling,global.all_body_scaling*global.head_scaling,global.all_body_rotation+global.head_rotation,c_white,1);

////////////////////Left Leg

incx = x + global.left_leg_pos_x + ((global.all_body_scaling * 37.4) * cos(degtorad(global.all_body_rotation-(pi/2))+4.94))
incy = y + global.left_leg_pos_y - ((global.all_body_scaling * 37.4) * sin(degtorad(global.all_body_rotation-(pi/2))+4.94))

draw_sprite_ext(forearm_or_leg,-1,incx,incy,global.all_body_scaling*global.left_leg_scaling,global.all_body_scaling*global.left_leg_scaling,global.all_body_rotation+global.left_leg_rotation,c_white,1)
draw_text(incx,incy,"LL")
offx = ((global.all_body_scaling * global.left_leg_scaling * global.leg_length) * cos(degtorad(global.all_body_rotation+global.left_leg_rotation)-(pi/2)))
offy = ((global.all_body_scaling * global.left_leg_scaling * global.leg_length) * sin(degtorad(global.all_body_rotation+global.left_leg_rotation)-(pi/2)))
incx = incx + global.left_foreleg_pos_x + offx
incy = incy + global.left_foreleg_pos_y - offy

draw_sprite_ext(forearm_or_leg,-1,incx,incy,global.all_body_scaling*global.left_foreleg_scaling,global.all_body_scaling*global.left_foreleg_scaling,global.all_body_rotation+global.left_leg_rotation+global.left_foreleg_rotation,c_white,1)
draw_text(incx,incy,"LFL")

////////////////////Left foot

offx = ((global.all_body_scaling * global.left_foreleg_scaling * global.leg_length) * cos(degtorad(global.all_body_rotation+global.left_leg_rotation+global.left_foreleg_rotation)-(pi/2)))
offy = ((global.all_body_scaling * global.left_foreleg_scaling * global.leg_length) * sin(degtorad(global.all_body_rotation+global.left_leg_rotation+global.left_foreleg_rotation)-(pi/2)))
incx = incx + global.left_foot_pos_x + offx
incy = incy + global.left_foot_pos_y - offy

draw_sprite_ext(foot,-1,incx,incy,global.all_body_scaling*global.left_foot_scaling,global.all_body_scaling*global.left_foot_scaling,global.all_body_rotation+global.left_leg_rotation+global.left_foreleg_rotation+global.left_foot_rotation,c_white,1)
draw_text(incx,incy,"LF")


/////////////////////Left arm
incx = x + global.left_arm_pos_x + ((global.all_body_scaling * 30.4) * cos(degtorad(global.all_body_rotation-(pi/2))+0.91))
incy = y + global.left_arm_pos_y - ((global.all_body_scaling * 30.4) * sin(degtorad(global.all_body_rotation-(pi/2))+0.91))

draw_sprite_ext(arm,-1,incx,incy,global.all_body_scaling*global.left_arm_scaling,global.all_body_scaling*global.left_arm_scaling,global.all_body_rotation+global.left_arm_rotation,c_white,1)
draw_text(incx,incy,"LA")
offx = ((global.all_body_scaling * global.left_arm_scaling * global.arm_length) * cos(degtorad(global.all_body_rotation+global.left_arm_rotation)-(pi/2)))
offy = ((global.all_body_scaling * global.left_arm_scaling * global.arm_length) * sin(degtorad(global.all_body_rotation+global.left_arm_rotation)-(pi/2)))
incx = incx + global.left_forearm_pos_x + offx
incy = incy + global.left_forearm_pos_y - offy

draw_sprite_ext(forearm_or_leg,-1,incx,incy,global.all_body_scaling*global.left_forearm_scaling,global.all_body_scaling*global.left_forearm_scaling,global.all_body_rotation+global.left_arm_rotation+global.left_forearm_rotation,c_white,1)
draw_text(incx,incy,"LFA")


Key Press Event for <Space> Key:
execute code:

str = get_string("Input code","");


execute_string(str);

JuurianChi 12 years, 7 months ago

Christ, that is large.

you should post your code in pastebin or something.

Game looks good so far, I'm getting pessimistic about my entry.

Harrk 12 years, 7 months ago

My thoughts are with you and your family as you even try to animate that.

Your characters look amazing though :D

I don't even think I'll be animating mine (in the battle room anyhow), and they're only 18x24. I don't want to guess what size you're working at.

Good luck with your code though.

Polystyrene Man 12 years, 7 months ago

Wow, that's a lot of hard coding. Hope you don't ever want to change anything…

Charlie Carlo 12 years, 7 months ago

Harrk, I'm making the graphics, and they're 192x192-ish.

Harrk 12 years, 7 months ago

Oh, lol. Guessing you're working as a team on this? Either way, good luck on it.