Any ideas for tutorials?

Game Editor comments and discussion.

Re: Any ideas for tutorials?

Postby skydereign » Tue Jun 05, 2012 12:43 am

Fuzzy wrote:So I am looking for a function that we can reduce, taken from code in use. Then we - as a community - will talk about how it may be written differently.

If that's the case, I'd suggest making a topic out of it. A place where anybody can post their code, and everybody can discuss ways to shorten and improve it. It'd be kind of like the thoughts about data control topic.
User avatar
skydereign
 
Posts: 3510
Joined: Mon Jul 28, 2008 8:29 am
Score: 589 Give a positive score

Re: Any ideas for tutorials?

Postby Fuzzy » Tue Jun 05, 2012 1:44 am

Right. Good idea.
Mortal Enemy of IF....THEN(and Inspector Gadget)

Still ThreeFingerPete to tekdino
User avatar
Fuzzy
 
Posts: 1068
Joined: Thu Mar 03, 2005 9:32 am
Location: Plymostic Programmer
Score: 95 Give a positive score

Re: Any ideas for tutorials?

Postby Game A Gogo » Tue Jun 05, 2012 11:18 am

muhehahahaha...

Code: Select all
int TNum,TNum2,TNum3,TThrust,i,TGun;
float mem,accel,decel,TAngle,Tdist, TuN;
char* key;
TNum3=SC_Stat[ShipID][2];

//-|-|- Control Module -|-|-
if(ShipID==0)
{
    key=GetKeyState();
    view.x=32+x-view.width*.5;
    view.y=32+y-view.height*.5;
    SC_Con[0][0]=key[KEYM[0]];
    SC_Con[0][1]=key[KEYM[1]];
    SC_Con[0][2]=key[KEYM[2]];
    SC_Con[0][3]=key[KEYM[3]];
    SC_Con[0][4]=key[KEYM[4]];
    SC_Con[0][5]=key[KEYM[5]];
    SC_Con[0][6]=key[KEYM[6]];
    SC_Con[0][7]=key[KEYM[7]];
}
else if(ShipID==1)
{
    GotoAIModule("SPR_SpaceCraft",-1,APPROACH);
}
else if(ShipID==2)
{
    GotoAIModule("SPR_SpaceCraft2",-1,APPROACH);
}
else if(ShipID==3)
{
    GotoAIModule("SPR_SpaceCraft1",-1,APPROACH);
}
else if(ShipID==4)
{
    GotoAIModule("SPR_SpaceCraft3",-1,APPROACH);
}
else if(ShipID==5)
{
    GotoAIModule("SPR_SpaceCraft4",-1,APPROACH);
}
else if(ShipID==6)
{
    GotoAIModule("SPR_SpaceCraft5",-1,APPROACH);
}
else
{
    GotoAIModule("SPR_SpaceCraft6",-1,APPROACH);
}
//-|-|- Physic Module -|-|-

if(SC_MSt[ShipID][2]<=0){DestroyActor("Event Actor");CreateActor("Explosion", "Explosion", "(none)", "(none)", 32, 32, false);}
if(SC_Col[ShipID]) //Got hit! hit[] is also the number of 1/10 seconds to loose control
{
    SC_Stat[ShipID][7]=1;
    DestroyTimer("LooseControl");
    CreateTimer("Event Actor", "LooseControl", SC_Col[ShipID]*100);
    SC_Col[ShipID]=0;
}

//-|1|- Movement

//Warp
x=(abs(x+32)>ArenaSize)?(0-sign(x))*(ArenaSize-1)-32:x;
y=(abs(y+32)>ArenaSize)?(0-sign(y))*(ArenaSize-1)-32:y;
if(SC_Stat[ShipID][7]==0)
{
    TThrust=rand((1-(SC_MSt[ShipID][4]/(double)SC_SS[ShipID][4]))*40);
    TGun=rand((1-(SC_MSt[ShipID][3]/(double)SC_SS[ShipID][3]))*40);
    if(SC_Con[ShipID][0]){directional_velocity*=.95;SC_Stat[ShipID][0]+=(PI*(float)SC_SS[ShipID][7]/42);SC_Upd[ShipID]=0;SC_Con[ShipID][9]=max(0,SC_Con[ShipID][9]-5);}
    if(SC_Con[ShipID][1]){directional_velocity*=.95;SC_Stat[ShipID][0]-=(PI*(float)SC_SS[ShipID][7]/42);SC_Upd[ShipID]=0;SC_Con[ShipID][9]=max(0,SC_Con[ShipID][9]-5);}
    mem=degtorad(270-SC_Stat[ShipID][0]);
    TNum=SC_Stat[ShipID][1];
    if(TGun<15&&SC_Con[ShipID][4])//Shoot
    {
        if(SC_CST[ShipID][1]==0)
        {
            if(SC_Stat[ShipID][2]==0)
            {
                Tdist=distance(24,23,24+SC_GS[ShipID][0],SC_GS[ShipID][1]);
                TAngle=degtorad(direction(24,23,24+SC_GS[ShipID][0],SC_GS[ShipID][1])-SC_Stat[ShipID][0]);
                CreateActor("Bullet", "bullet", "(none)", "(none)", -(Tdist*cos(TAngle))+32, -(Tdist*sin(TAngle))+32, false);
                TAngle=degtorad(direction(24,23,24-SC_GS[ShipID][0],SC_GS[ShipID][1])-SC_Stat[ShipID][0]);
                CreateActor("Bullet", "bullet", "(none)", "(none)", -(Tdist*cos(TAngle))+32, -(Tdist*sin(TAngle))+32, false);
            }
            else CreateActor("Bullet", "bullet", "(none)", "(none)", cos(mem)*16+32, yvelocity+sin(mem)*16+32, false);
        }
        if(SC_CST[ShipID][1]<4)SC_CST[ShipID][1]++;
        else SC_CST[ShipID][1]=0;
    }
    if(SC_Con[ShipID][3])//Brake
    {
        SC_Stat[ShipID][1]=0;
        SC_Con[ShipID][9]=max(0,SC_Con[ShipID][9]-20);
        decel=(double)(255-SC_SS[ShipID][8])/512+.2;
        directional_velocity = max(0, directional_velocity - decel);
    }
    else if(TThrust<15&&SC_Con[ShipID][2]&&directional_velocity<(255-SC_SS[ShipID][8])*.4+5)
    {//Thruster
        CreateActor("Spark", "Spark", "(none)", "(none)", cos(mem+PI)*16+32, sin(mem+PI)*16+32, false);
        SC_Stat[ShipID][1]=1;
        SC_Con[ShipID][9]=min(640,SC_Con[ShipID][9]+3);
        TNum2=round(((double)SC_Con[ShipID][9]/640)*255);
        accel=max(0.05,SC_Sp[ShipID][TNum2]*4);
        SC_MSt[ShipID][0]=max(SC_MSt[ShipID][0]-0.01,0);
        if(SC_MSt[ShipID][0]==0)
        {
            CreateActor("Explosion", "Explosion", "(none)", "(none)", 0, 0, false);
            SC_MSt[ShipID][4]=max(0,SC_MSt[ShipID][4]-DMG_WThrust*20);
        }
        if(SC_Con[ShipID][6])//Super thrust
        {
            if(SC_CST[ShipID][0]==0)
            {
                for(i=0;i<5;i++)CreateActor("Spark", "bullet", "(none)", "(none)", cos(mem+PI)*16+32, sin(mem+PI)*16+32, false);
                accel=max(0,SC_Sp[ShipID][250])*10;
                SC_MSt[ShipID][0]-=0.1;
            }
            if(SC_CST[ShipID][0]<8)SC_CST[ShipID][0]++;
            else SC_CST[ShipID][0]=0;
        }
        else if(SC_Con[ShipID][6]==0&&SC_CST[ShipID][0]>0)
        {
            if(SC_CST[ShipID][0]<8)SC_CST[ShipID][0]++;
            else SC_CST[ShipID][0]=0;
        }
        xvelocity += accel*cos(mem);
        yvelocity += accel*sin(mem);
    }
    else//free roaming (Not braking/thrusting)
    {
        SC_Stat[ShipID][1]=0;
        SC_Con[ShipID][9]=max(0,SC_Con[ShipID][9]-3-(10*(SC_Con[ShipID][2]==0)));
        decel=(double)(255-SC_SS[ShipID][8])/512+.2;
        directional_velocity = max(0, directional_velocity - decel*.01);
        //Scientific note:
        //  In real life, objects do not deccelerate in space.
        //  Because there is no air, there is no friction
        //  against moving object to slow them down. Unlike
        //  our atmosphere which contains oxygen and other atoms(polution)
        //  (Little but enough to make airplanes fly, I could
        //  go deeper in explanation, but I'm not here to teach
        //  about physics, chemistry and the laws of fluid!)
    }
    if(TGun>=15&&SC_Con[ShipID][4]==0&&SC_CST[ShipID][1]>0)
    {
        if(SC_CST[ShipID][1]<4)SC_CST[ShipID][1]++;
        else SC_CST[ShipID][1]=0;
    }
    HitTDo=0;
}
else
{
    if(HitTDo==0){HitTDo=1;HitTD=rand(2);}
    TuN=max(6.635,directional_velocity*2);
    switch(HitTD)
    {case 0:SC_Stat[ShipID][0]+=TuN;break;case 1:SC_Stat[ShipID][0]-=TuN;break;}
    SC_Upd[ShipID]=0;
    SC_Stat[ShipID][1]=0;
    directional_velocity=max(0,directional_velocity-.01);
}
SC_Stat[ShipID][2]=max(0,min(4-(int)round((SC_MSt[ShipID][1]/(double)SC_SS[ShipID][1])*4)-2,2));
directional_velocity=min(directional_velocity,75);


//-|-|- Drawing Module -|-|-

if(TNum!=SC_Stat[ShipID][1])SC_Upd[ShipID]=0;
if(TNum3<SC_Stat[ShipID][2])CreateActor("Explosion", "Explosion", "(none)", "(none)", 32, 32, false);
if(SC_Upd[ShipID]==0)
{
    if(inView("Event Actor"))Draw_Ship(ShipID,SC_Stat[ShipID][0],SC_Stat[ShipID][1],SC_Stat[ShipID][2]);
    SC_Upd[ShipID]=1;
}
SC_Stat[ShipID][0]=angWrap(SC_Stat[ShipID][0]);

//-|-|- Sub Control Module -|-|-

SC_Con[ShipID][0]=0;
SC_Con[ShipID][1]=0;
SC_Con[ShipID][2]=0;
SC_Con[ShipID][3]=0;
SC_Con[ShipID][4]=0;
SC_Con[ShipID][5]=0;
SC_Con[ShipID][6]=0;
SC_Con[ShipID][7]=0;


Code: Select all
const NORMAL=0;
const APPROACH=1;
const ATTACK=2;
const ARREST=3;
const TERMINATE=4;
const ROAMING=5;
const CAPTURE=6;
int GotoAIModule(char* Target,int ClI, int Cond)
{
    //Goto AI Module V1
    //Makes a space craft fly towards a target under certain conditions.
    Actor*Tactor=NULL;
    Actor*T2actor=NULL;
    Actor*Clactor=NULL;
    double tnum,SD=16*directional_velocity+128;
    int i;
    //Big rocks
    if(ClI==-1)Tactor=getclone(Target);
    else Tactor=getclone2(Target,ClI);
    for(i=0;i<128;i++)
    {
        Clactor=getclone2("Aste_B",i);
        if(Clactor->Dead&&distance(x+32,y+32,Clactor->x,Clactor->y)<SD){T2actor=Clactor;SD=distance(x+32,y+32,Clactor->x,Clactor->y);}
    }
    //Med rocks
    for(i=0;i<512;i++)
    {
        Clactor=getclone2("Aste_M",i);
        if(Clactor->Dead&&distance(x+32,y+32,Clactor->x,Clactor->y)<SD){T2actor=Clactor;SD=distance(x+32,y+32,Clactor->x,Clactor->y);}
    }
    //Small rocks
    for(i=0;i<2024;i++)
    {
        Clactor=getclone2("Aste_S",i);
        if(Clactor->Dead&&distance(x+32,y+32,Clactor->x,Clactor->y)<SD){T2actor=Clactor;SD=distance(x+32,y+32,Clactor->x,Clactor->y);}
    }
    if(SD<16*directional_velocity+128)
    {
        tnum=getangle(angle,direction(x,y,T2actor->x,T2actor->y));
        if(abs(tnum)<45&&getangle(SC_Stat[ShipID][0]+90,direction(x,y,T2actor->x,T2actor->y))<45)
        {
            if(tnum>(PI*(float)SC_SS[ShipID][7]/42))SC_Con[ShipID][1]=1;
            if(tnum<-(PI*(float)SC_SS[ShipID][7]/42))SC_Con[ShipID][0]=1;ðÐ
        }
        if(directional_velocity>5)SC_Con[ShipID][3]=1;
        else SC_Con[ShipID][2]=1;
        return 0;
    }
    else
    {
    if(Tactor)
    {
        if(Cond==NORMAL||Cond==ATTACK)
        {
            if(strcmp(Tactor->name,"SPR_SpaceCraft")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft1")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft2")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft3")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft4")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft5")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft6")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft7")==0)
            {
                if(distance(x,y,Tactor->x,Tactor->y)>130)
                {
                    tnum=getangle(SC_Stat[ShipID][0]+90,direction(x,y,Tactor->x,Tactor->y));
                    if(tnum>(PI*(float)SC_SS[ShipID][7]/42))SC_Con[ShipID][0]=1;
                    if(tnum<-(PI*(float)SC_SS[ShipID][7]/42))SC_Con[ShipID][1]=1;
                    if(distance(x,y,Tactor->x,Tactor->y)>400)
                    {
                        if(directional_velocity<25){SC_Con[ShipID][2]=1;SC_Con[ShipID][6]=1;}
                        else SC_Con[ShipID][3]=1;
                    }
                    else if(distance(x,y,Tactor->x,Tactor->y)>200)
                    {
                        if(directional_velocity<17)SC_Con[ShipID][2]=1;
                        else SC_Con[ShipID][3]=1;
                    }
                    else if(distance(x,y,Tactor->x,Tactor->y)>150)
                    {
                        if(directional_velocity<7)SC_Con[ShipID][2]=1;
                        else SC_Con[ShipID][3]=1;
                    }
                    else
                    {
                        if(directional_velocity<4)SC_Con[ShipID][2]=1;
                        else SC_Con[ShipID][3]=1;
                    }
                    if(directional_velocity>1&&abs(getangle(angle,direction(x,y,Tactor->x,Tactor->y)))>=45)SC_Con[ShipID][3]=1;
                }
                else
                {
                    tnum=getangle(SC_Stat[ShipID][0]+90,225+direction(x,y,Tactor->x,Tactor->y));
                    if(tnum>(PI*(float)SC_SS[ShipID][7]/42))SC_Con[ShipID][0]=1;
                    if(tnum<-(PI*(float)SC_SS[ShipID][7]/42))SC_Con[ShipID][1]=1;ðÐ
                    if(directional_velocity>5)SC_Con[ShipID][3]=1;
                    else SC_Con[ShipID][2]=1;
                }
            }
            else
            {
                if(distance(x+32,y+32,Tactor->x,Tactor->y)>130)
                {
                    tnum=getangle(SC_Stat[ShipID][0]+90,direction(x+32,y+32,Tactor->x,Tactor->y));
                    if(tnum>(PI*(float)SC_SS[ShipID][7]/42))SC_Con[ShipID][0]=1;
                    if(tnum<-(PI*(float)SC_SS[ShipID][7]/42))SC_Con[ShipID][1]=1;
                    if(distance(x+32,y+32,Tactor->x,Tactor->y)>400)
                    {
                        if(directional_velocity<25){SC_Con[ShipID][2]=1;SC_Con[ShipID][6]=1;}
                        else SC_Con[ShipID][3]=1;
                    }
                    else if(distance(x+32,y+32,Tactor->x,Tactor->y)>205)
                    {
                        if(directional_velocity<17)SC_Con[ShipID][2]=1;
                        else SC_Con[ShipID][3]=1;
                    }
                    else if(distance(x+32,y+32,Tactor->x,Tactor->y)>150)
                    {
                        if(directional_velocity<7)SC_Con[ShipID][2]=1;
                        else SC_Con[ShipID][3]=1;
                    }
                    else
                    {
                        if(directional_velocity<4)SC_Con[ShipID][2]=1;
                        else SC_Con[ShipID][3]=1;
                    }
                    if(directional_velocity>1&&abs(getangle(angle,direction(x+32,y+32,Tactor->x,Tactor->y)))>=45)SC_Con[ShipID][3]=1;
                }
                else
                {
                    tnum=getangle(SC_Stat[ShipID][0]+90,225+direction(x+32,y+32,Tactor->x,Tactor->y));
                    if(tnum>(PI*(float)SC_SS[ShipID][7]/42))SC_Con[ShipID][0]=1;
                    if(tnum<-(PI*(float)SC_SS[ShipID][7]/42))SC_Con[ShipID][1]=1;ðÐ
                    if(directional_velocity>5)SC_Con[ShipID][3]=1;
                    else SC_Con[ShipID][2]=1;
                }
            }
        }
        else if(Cond==APPROACH)
        {
            if(strcmp(Tactor->name,"SPR_SpaceCraft")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft1")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft2")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft3")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft4")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft5")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft6")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft7")==0)
            {
                if(distance(x,y,Tactor->x,Tactor->y)>130)
                {
                    tnum=getangle(SC_Stat[ShipID][0]+90,direction(x,y,Tactor->x,Tactor->y));
                    if(tnum>(PI*(float)SC_SS[ShipID][7]/42))SC_Con[ShipID][0]=1;
                    if(tnum<-(PI*(float)SC_SS[ShipID][7]/42))SC_Con[ShipID][1]=1;
                    if(distance(x,y,Tactor->x,Tactor->y)>400)
                    {
                        if(directional_velocity<25){SC_Con[ShipID][2]=1;SC_Con[ShipID][6]=1;}
                        else SC_Con[ShipID][3]=1;
                    }
                    else if(distance(x,y,Tactor->x,Tactor->y)>200)
                    {
                        if(directional_velocity<17)SC_Con[ShipID][2]=1;
                        else SC_Con[ShipID][3]=1;
                    }
                    else if(distance(x,y,Tactor->x,Tactor->y)>150)
                    {
                        if(directional_velocity<5)SC_Con[ShipID][2]=1;
                        else SC_Con[ShipID][3]=1;
                    }
                    else
                    {
                        if(directional_velocity<4)SC_Con[ShipID][3]=1;
                    }
                    if(directional_velocity>1&&abs(getangle(angle,direction(x,y,Tactor->x,Tactor->y)))>=45)SC_Con[ShipID][3]=1;
                }
                else SC_Con[ShipID][3]=1;
            }
            else
            {
                if(distance(x+32,y+32,Tactor->x,Tactor->y)>130)
                {
                    tnum=getangle(SC_Stat[ShipID][0]+90,direction(x+32,y+32,Tactor->x,Tactor->y));
                    if(tnum>(PI*(float)SC_SS[ShipID][7]/42))SC_Con[ShipID][0]=1;
                    if(tnum<-(PI*(float)SC_SS[ShipID][7]/42))SC_Con[ShipID][1]=1;
                    if(distance(x+32,y+32,Tactor->x,Tactor->y)>400)
                    {
                        if(directional_velocity<25){SC_Con[ShipID][2]=1;SC_Con[ShipID][6]=1;}
                        else SC_Con[ShipID][3]=1;
                    }
                    else if(distance(x+32,y+32,Tactor->x,Tactor->y)>200)
                    {
                        if(directional_velocity<17)SC_Con[ShipID][2]=1;
                        else SC_Con[ShipID][3]=1;
                    }
                    else if(distance(x+32,y+32,Tactor->x,Tactor->y)>150)
                    {
                        if(directional_velocity<5)SC_Con[ShipID][2]=1;
                        else SC_Con[ShipID][3]=1;
                    }
                    else
                    {
                        if(directional_velocity<4)SC_Con[ShipID][3]=1;
                    }
                    if(directional_velocity>1&&abs(getangle(angle,direction(x+32,y+32,Tactor->x,Tactor->y)))>=45)SC_Con[ShipID][3]=1;
                }
                else SC_Con[ShipID][3]=1;
            }
        }
        if(Cond==ATTACK)
        {
            if(strcmp(Tactor->name,"SPR_SpaceCraft")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft1")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft2")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft3")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft4")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft5")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft6")==0||
               strcmp(Tactor->name,"SPR_SpaceCraft7")==0)
            {
                if(abs(getangle(SC_Stat[ShipID][0]+90,direction(x,y,Tactor->x,Tactor->y)))<=45&&distance(x,y,Tactor->x,Tactor->y)<512)SC_Con[ShipID][4]=1;
            }
            else
            {
                if(abs(getangle(SC_Stat[ShipID][0]+90,direction(x+32,y+32,Tactor->x,Tactor->y)))<=45&&distance(x+32,y+32,Tactor->x,Tactor->y)<512)SC_Con[ShipID][4]=1;
            }
        }
        if(Cond==CAPTURE)
        {
            {
                if(distance(x+32,y+32,Tactor->x,Tactor->y)>130)
                {
                    tnum=getangle(SC_Stat[ShipID][0]+90,direction(x+32,y+32,Tactor->x,Tactor->y));
                    if(tnum>(PI*(float)SC_SS[ShipID][7]/42))SC_Con[ShipID][0]=1;
                    if(tnum<-(PI*(float)SC_SS[ShipID][7]/42))SC_Con[ShipID][1]=1;
                    if(distance(x+32,y+32,Tactor->x,Tactor->y)>400)
                    {
                        if(directional_velocity<25){SC_Con[ShipID][2]=1;SC_Con[ShipID][6]=1;}
                        else SC_Con[ShipID][3]=1;
                    }
                    else if(distance(x+32,y+32,Tactor->x,Tactor->y)>200)
                    {
                        if(directional_velocity<17)SC_Con[ShipID][2]=1;
                        else SC_Con[ShipID][3]=1;
                    }
                    else if(distance(x+32,y+32,Tactor->x,Tactor->y)>150)
                    {
                        if(directional_velocity<5)SC_Con[ShipID][2]=1;
                        else SC_Con[ShipID][3]=1;
                    }
                    else
                    {
                        if(directional_velocity<4)SC_Con[ShipID][2]=1;
                    }
                    if(directional_velocity>1&&abs(getangle(angle,direction(x+32,y+32,Tactor->x,Tactor->y)))>=45)SC_Con[ShipID][3]=1;
                }
                else SC_Con[ShipID][2]=1;
            }
        }
 
        return 0;
 
    }
    else return -1;
    }
}
Programming games is an art,
    Respect it.
User avatar
Game A Gogo
 
Posts: 3466
Joined: Wed Jun 29, 2005 10:49 pm
Location: French Canada *laughs*
Score: 181 Give a positive score

Re: Any ideas for tutorials?

Postby master0500 » Tue Jun 05, 2012 11:29 am

could you make a tutorial on simple platformer/rpg type AI similar to WBR?
master0500
 
Posts: 409
Joined: Sun Jun 26, 2011 9:42 pm
Score: 27 Give a positive score

Re: Any ideas for tutorials?

Postby SuperSonic » Thu Jun 07, 2012 12:44 am

Game A Gogo wrote:muhehahahaha...
You're evil :P
A tree never hits an automobile except in self-defence.

Want to use your joystick or controller with Game Editor? Check out my controller engine =D
User avatar
SuperSonic
 
Posts: 1443
Joined: Fri Sep 24, 2010 9:24 pm
Location: Anywhere
Score: 72 Give a positive score

Re: Any ideas for tutorials?

Postby lcl » Thu Jun 07, 2012 9:17 am

master0500 wrote:could you make a tutorial on simple platformer/rpg type AI similar to WBR?

I probably could :D

Some of these suggestions may be better to be explained through a written tutorial because making a video of something as complex as enemy AI would result to a very long video.. And I think I have to make some of these in written tutorial AND video tutorial because that would help people to learn. :)

I think I'll start making the tutorials today. =)
User avatar
lcl
 
Posts: 2339
Joined: Thu Mar 25, 2010 5:55 pm
Location: Finland
Score: 276 Give a positive score

Re: Any ideas for tutorials?

Postby lcl » Fri Jun 08, 2012 8:54 am

First few tutorials are now published, see them here: viewtopic.php?f=27&t=12088 :D
User avatar
lcl
 
Posts: 2339
Joined: Thu Mar 25, 2010 5:55 pm
Location: Finland
Score: 276 Give a positive score

Re: Any ideas for tutorials?

Postby REDNSX » Mon Jun 11, 2012 11:43 pm

I think if you made a tutorial on how to make a game like the old arcad Double Dragon it would help so much. If you made it from how to start to finish. Start with basics for people who never have used GE. Just make it so every one could do it. I think if you did this GE would get so many users. Right now the only turorials they have are not very good because you kind of lose interest when you are watching them. That's what I think. :D
User avatar
REDNSX
 
Posts: 237
Joined: Sun Feb 13, 2011 3:03 am
Score: 7 Give a positive score

Re: Any ideas for tutorials?

Postby SuperSonic » Tue Jun 12, 2012 1:35 am

Tutorials on creating full games are usually not that good. It's better to make tutorials on certain aspects of the game. Like a simple gameplay engine. But I've never played Double Dragon before so I don't know :)
A tree never hits an automobile except in self-defence.

Want to use your joystick or controller with Game Editor? Check out my controller engine =D
User avatar
SuperSonic
 
Posts: 1443
Joined: Fri Sep 24, 2010 9:24 pm
Location: Anywhere
Score: 72 Give a positive score

Re: Any ideas for tutorials?

Postby REDNSX » Tue Jun 12, 2012 5:42 am

I think it's better to have a full game tutorial because when you make a game and it's the fist time, you end up missing things. I will give you a example. When I started my first game with GE I did not realize I would need to know hot to save variables for high score or how to stop music from playing. Now I understand it better so I could get what I want most of the time. I would have liked it if I could have seen someone do all this so I could have understood much better. If we have a tutorial that has a game done you could then see it and say how did he do that and go watch what he did. If its done right we will not be asking the same questions over and over like I find my self doing because I missed it the last time.
User avatar
REDNSX
 
Posts: 237
Joined: Sun Feb 13, 2011 3:03 am
Score: 7 Give a positive score

Re: Any ideas for tutorials?

Postby lcl » Tue Jun 12, 2012 8:27 am

Hmm.. I understand what you mean, REDNSX. I remember being a newbie to Game Editor and I remember being very confused about the whole engine when I started.
A complete tutorial of making a simple game would be, (if everything is explained carefully) a good way to learn the basics of the program.

There is just one thing that could cause problems..
And it's that I've used Game Editor for a quite long time and I have evolved as a programmer
and when I would start making a tutorial, I would want to teach making the game the way I see to be the best. And now here comes a problem. It will easily get to be too difficult for new people and my code-centered style of making games could make them too confused to try to continue with Game Editor. The thing is that I don't want to teach people what I see is "wrong", or in other words, a bad way of making a game.

It's like there is two ways of using Game Editor.
The first being the way with the minimun amount of code and maximum amount of usage of the built-in functions.
And the second being the way with the maximum amount of things done through code, as it is easier to handle.

I wouldn't like to teach the first way because using it the game projects will turn to horrible messes... :/

I don't know if I am going to make this tutorial. At least I'll finish with the other ones first because this would take a lot time. :)
User avatar
lcl
 
Posts: 2339
Joined: Thu Mar 25, 2010 5:55 pm
Location: Finland
Score: 276 Give a positive score

Re: Any ideas for tutorials?

Postby SuperSonic » Tue Jun 12, 2012 1:08 pm

Why don't you do a tutorial for a simply game then? Like Space Invaders or Frogger? :)
A tree never hits an automobile except in self-defence.

Want to use your joystick or controller with Game Editor? Check out my controller engine =D
User avatar
SuperSonic
 
Posts: 1443
Joined: Fri Sep 24, 2010 9:24 pm
Location: Anywhere
Score: 72 Give a positive score

Re: Any ideas for tutorials?

Postby REDNSX » Tue Jun 12, 2012 2:09 pm

I get you also lcl. I at first started with using the build in stuff also as much as possible but know itry to use script editor as much as as posible. But a easy game would be a good idea if you make more tutorials.
User avatar
REDNSX
 
Posts: 237
Joined: Sun Feb 13, 2011 3:03 am
Score: 7 Give a positive score

Re: Any ideas for tutorials?

Postby lcl » Tue Jun 12, 2012 2:17 pm

SuperSonic wrote:Why don't you do a tutorial for a simply game then? Like Space Invaders or Frogger? :)

I had no idea what kind of game Double Dragon is, I was just talking about the general idea of making a tutorial of making some game.
And after watching a video of Double Dragon I have to agree with you, Double Dragon is too complicated game for this. I watched a video of Frogger too and it seems nice but too repetitive. If I made a tutorial of making it, it would be mostly just different actors with different xvelocities... not that much anything to learn.. :wink:

But however, regardless of the game this idea may be worth accomplishing. I'll see what I do with this idea when I have made the other tutorials :)

EDIT:
I get you also lcl. I at first started with using the build in stuff also as much as possible but know itry to use script editor as much as as posible. But a easy game would be a good idea if you make more tutorials.

Yeah, easy but not repetitive. That's a type of game I need :)
User avatar
lcl
 
Posts: 2339
Joined: Thu Mar 25, 2010 5:55 pm
Location: Finland
Score: 276 Give a positive score

Re: Any ideas for tutorials?

Postby lcl » Fri Apr 05, 2013 10:36 pm

Guys, I got a new headset now and the voice quality is much better.
I'll probably start making new tutorials, just tell me what you want to learn about. :)
User avatar
lcl
 
Posts: 2339
Joined: Thu Mar 25, 2010 5:55 pm
Location: Finland
Score: 276 Give a positive score

PreviousNext

Return to GE - General

Who is online

Users browsing this forum: No registered users and 1 guest