Page 2 of 4

Re: Any ideas for tutorials?

PostPosted: Tue Jun 05, 2012 12:43 am
by skydereign
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.

Re: Any ideas for tutorials?

PostPosted: Tue Jun 05, 2012 1:44 am
by Fuzzy
Right. Good idea.

Re: Any ideas for tutorials?

PostPosted: Tue Jun 05, 2012 11:18 am
by Game A Gogo
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;
    }
}

Re: Any ideas for tutorials?

PostPosted: Tue Jun 05, 2012 11:29 am
by master0500
could you make a tutorial on simple platformer/rpg type AI similar to WBR?

Re: Any ideas for tutorials?

PostPosted: Thu Jun 07, 2012 12:44 am
by SuperSonic
Game A Gogo wrote:muhehahahaha...
You're evil :P

Re: Any ideas for tutorials?

PostPosted: Thu Jun 07, 2012 9:17 am
by lcl
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. =)

Re: Any ideas for tutorials?

PostPosted: Fri Jun 08, 2012 8:54 am
by lcl
First few tutorials are now published, see them here: viewtopic.php?f=27&t=12088 :D

Re: Any ideas for tutorials?

PostPosted: Mon Jun 11, 2012 11:43 pm
by REDNSX
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

Re: Any ideas for tutorials?

PostPosted: Tue Jun 12, 2012 1:35 am
by SuperSonic
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 :)

Re: Any ideas for tutorials?

PostPosted: Tue Jun 12, 2012 5:42 am
by REDNSX
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.

Re: Any ideas for tutorials?

PostPosted: Tue Jun 12, 2012 8:27 am
by lcl
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. :)

Re: Any ideas for tutorials?

PostPosted: Tue Jun 12, 2012 1:08 pm
by SuperSonic
Why don't you do a tutorial for a simply game then? Like Space Invaders or Frogger? :)

Re: Any ideas for tutorials?

PostPosted: Tue Jun 12, 2012 2:09 pm
by REDNSX
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.

Re: Any ideas for tutorials?

PostPosted: Tue Jun 12, 2012 2:17 pm
by lcl
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 :)

Re: Any ideas for tutorials?

PostPosted: Fri Apr 05, 2013 10:36 pm
by lcl
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. :)