Gamestudio Links
Zorro Links
Newest Posts
Zorro 2.70
by jcl. 09/29/25 09:24
optimize global parameters SOLVED
by dBc. 09/27/25 17:07
ZorroGPT
by TipmyPip. 09/27/25 10:05
assetHistory one candle shift
by jcl. 09/21/25 11:36
Plugins update
by Grant. 09/17/25 16:28
AUM Magazine
Latest Screens
Rocker`s Revenge
Stug 3 Stormartillery
Iljuschin 2
Galactic Strike X
Who's Online Now
3 registered members (NewbieZorro, TipmyPip, 1 invisible), 19,045 guests, and 8 spiders.
Key: Admin, Global Mod, Mod
Newest Members
krishna, DrissB, James168, Ed_Love, xtns
19168 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 4 of 4 1 2 3 4
Re: Suche Feuer Shader [Re: Bastiuscha] #420182
03/20/13 21:49
03/20/13 21:49
Joined: Nov 2007
Posts: 2,568
Germany, BW, Stuttgart
MasterQ32 Offline
Expert
MasterQ32  Offline
Expert

Joined: Nov 2007
Posts: 2,568
Germany, BW, Stuttgart
Beim Coden ist die richtige Ausdrucksweise wichtig.
Und zu deinem Problem mit den Lichtern:
Gamestudio kann blos 8 dynamische Lichter gleichzeitig darstellen. Diese Begrenzung wird durch einen Trick erhöht, aber es dürfen sich nicht mehr als 8 dynamische Lichter überschneiden (radius mit lightrange).
Ich würde in deinem Level auch statische Lichter verwenden. Davon hast du unbegrenzt viele.


Visit my site: www.masterq32.de
Re: Suche Feuer Shader [Re: MasterQ32] #420183
03/20/13 22:05
03/20/13 22:05
Joined: Jun 2008
Posts: 156
B
Bastiuscha Offline OP
Member
Bastiuscha  Offline OP
Member
B

Joined: Jun 2008
Posts: 156
Ou Jungs, das war mir nicht bewusst.Man Man Man, was ich noch alles lernen muss. tongue Also den Code reinstellen kann ich...aber der ist mega lang. das ist nen generierter (ihr habt ja sicher den Thread verfolgt) Code vom Particle Effect Builder. Die Lichter überschneiden sich eigentlich nicht, aber ok...ich werde sie trotzdem mal rausschmeissen, mal schauen was passiert. Durch welchen Trick kann man sie denn erhöhen?

Re: Suche Feuer Shader [Re: Bastiuscha] #420184
03/20/13 22:09
03/20/13 22:09
Joined: Nov 2007
Posts: 2,568
Germany, BW, Stuttgart
MasterQ32 Offline
Expert
MasterQ32  Offline
Expert

Joined: Nov 2007
Posts: 2,568
Germany, BW, Stuttgart
Das mit dem Überschneiden ist schon der Trick. Für jede Entity werden bloß die 8 nächsten Lichter genommen, dadurch hast du quasi unendlich Lichter, aber immer noch blos 8 für DirectX


Visit my site: www.masterq32.de
Re: Suche Feuer Shader [Re: MasterQ32] #420186
03/20/13 22:37
03/20/13 22:37
Joined: Jun 2008
Posts: 156
B
Bastiuscha Offline OP
Member
Bastiuscha  Offline OP
Member
B

Joined: Jun 2008
Posts: 156
AHHH, ok. vielen Dank. Vieleicht ist das ja der Grund...mal schauen.
Hier der Code vom Feuer:

Code:
/////////////////////////////////untitled.c/////////////////////////////////
//
//Generated by Parted by Martin Coumont (redphoenix)
//
//LiteC Script file from 15.03.2013 ; 17:49:09:
//
//////////////////////////////////////////////////////////////////////////////

/////////////////////////////////header/////////////////////////////////

#ifndef PARTED_VECTOR_DEF
 #define PARTED_VECTOR_DEF
 VECTOR* parted_temp_vec = { x=0;y=0;z=0; }
 VECTOR* parted_temp2_vec = { x=0;y=0;z=0; }
 ANGLE* parted_temp_ang = { pan=0;tilt=0;roll=0; }
#endif

#ifndef fire3_DEF
 #define fire3_DEF
   BMAP* fire3_map = "fire3.tga";
#endif
/////////////////////////////////particle code/////////////////////////////////

function Base_Effect_base(PARTICLE* p) {
   p.size = 4.000;
   p.alpha = 100.000;
   p.red = 128;
   p.green = 128;
   p.blue = 128;
   p.skill_c = 0.5;
   p.vel_x = random(2.000)+(-1.000);
   p.vel_y = random(2.000)+(-1.000);
   p.vel_z = (3.000);
   p.lifespan = 40.000;
   p.gravity = 0.000;
   p.flags = BRIGHT | TRANSLUCENT | MOVE;
   p.skill_x = p.vel_x;
   p.skill_y = p.vel_y;
   p.skill_z = p.vel_z;
   p.event = NULL;
}

function New_child1_child_event(PARTICLE* p) {
      p.alpha = clamp(p.alpha-5.000* time_step,-1,100);
      p.size -= 500* time_step;    //war mal 1.000
   if(p.alpha < 0 || p.size < 0) p.lifespan = 0;
}

function New_child1_child(PARTICLE* p) {
   p.size = 14.000;
   p.alpha = 100.000;
   p.red = 113;
   p.green = 36;
   p.blue = 0;
   p.skill_c = 0.5;
   p.vel_x = random(2.000)+(-1.000);
   p.vel_y = random(2.000)+(-1.000);
   p.vel_z = (3.000);
   p.lifespan = 40.000;
   p.gravity = 0.000;
   p.flags = BRIGHT | TRANSLUCENT | MOVE;
   p.skill_x = p.vel_x;
   p.skill_y = p.vel_y;
   p.skill_z = p.vel_z;
   p.event = New_child1_child_event;
}

function New_child_child_event(PARTICLE* p) {
      p.size += 2.000* time_step;
      p.alpha = clamp(p.alpha-3.000* time_step,-1,100);
   if(p.alpha < 0 || p.size < 0) p.lifespan = 0;
}

function New_child_child(PARTICLE* p) {
   p.size = 10.000;        //war mal 20.000
   p.alpha = random(45.555)+(22.445);
   p.red = 120;
   p.green = 120;
   p.blue = 120;
   p.skill_c = 0.5;
   p.vel_x = random(1.000)+(-0.500);
   p.vel_y = random(1.000)+(-0.500);
   p.vel_z = random(1.117)+(0.883);
   p.lifespan = 40.000;
   p.gravity = 0.000;
   p.flags = TRANSLUCENT | MOVE;
   p.skill_x = p.vel_x;
   p.skill_y = p.vel_y;
   p.skill_z = p.vel_z;
   p.event = New_child_child_event;
}

function Base_Effect2_base_event(PARTICLE* p) {
   if(p.alpha <= 2.000) {
      parted_temp_vec.x = 0.000;
      parted_temp_vec.y = 0.000;
      parted_temp_vec.z = 0.000;
      vec_add(parted_temp_vec,p.x);
      if(!(total_frames % 6)) {
         p.skill_c += 1.000*time_step*6.25;
         if(p.skill_c >= 1){
            effect(New_child1_child,integer(p.skill_c),parted_temp_vec,nullvector);
            p.skill_c -= integer(p.skill_c);
         }
      }
   }
   if(p.alpha <= 2.000) {
      parted_temp_vec.x = 0.000;
      parted_temp_vec.y = 0.000;
      parted_temp_vec.z = 0.000;
      vec_add(parted_temp_vec,p.x);
      if(!(total_frames % 5)) {
         p.skill_c += 1.000*time_step*6.25;
         if(p.skill_c >= 1){
            effect(New_child_child,integer(p.skill_c),parted_temp_vec,nullvector);
            p.skill_c -= integer(p.skill_c);
         }
      }
   }
      p.size += 0.399* time_step;
   if(p.lifespan <= 32.000 || (p.skill_a & 2)) {
      p.skill_a |= 2;
       p.alpha = clamp(p.alpha-4.000* time_step,-1,100);
   }
   if(p.alpha < 0 || p.size < 0) p.lifespan = 0;
}

function Base_Effect2_base(PARTICLE* p) {
   p.size = random(1.000)+(1.252);           //(1.748)+(3.252);
   p.alpha = random(27.535)+(25.465);
   p.red = 255;
   p.green = 128;
   p.blue = 64;
   p.skill_c = 0.5;
   p.vel_x = random(0.287)+(0.013);
   p.vel_y = random(0.281)+(0.019);
   p.vel_z = random(1.246)+(1.153);
   p.lifespan = 50.000;
   p.gravity = 0.000;
   p.bmap = fire3_map;
   p.flags = BRIGHT | TRANSLUCENT | MOVE;
   p.skill_x = p.vel_x;
   p.skill_y = p.vel_y;
   p.skill_z = p.vel_z;
   p.event = Base_Effect2_base_event;
}

function New_effect_base_event(PARTICLE* p) {
      p.size += 2.000* time_step;
      p.alpha = clamp(p.alpha-3.000* time_step,-1,100);
   if(p.alpha < 0 || p.size < 0) p.lifespan = 0;
}

function New_effect_base(PARTICLE* p) {
   p.size = 8.000;
   p.alpha = 52.000;
   p.red = 77;
   p.green = 136;
   p.blue = 225;
   p.skill_c = 0.5;
   p.vel_x = random(0.199)+(-0.100);
   p.vel_y = random(0.199)+(-0.100);
   p.vel_z = random(0.781)+(0.618);
   p.lifespan = 40.000;
   p.gravity = 0.000;
   p.flags = TRANSLUCENT | MOVE;
   p.skill_x = p.vel_x;
   p.skill_y = p.vel_y;
   p.skill_z = p.vel_z;
   p.event = New_effect_base_event;
}

/////////////////////////////////emitter actions/////////////////////////////////

action Base_Effect_emitter() {
   var eff_frac; eff_frac = 0;
wait(1);
   while(my) {
      parted_temp_vec.x = 0.000;
      parted_temp_vec.y = 0.000;
      parted_temp_vec.z = 0.000;
      vec_add(parted_temp_vec,my.x);
         eff_frac += 1.000*time_step*6.25;
         if(eff_frac >= 1){
            effect(Base_Effect_base,integer(eff_frac),parted_temp_vec,nullvector);
             eff_frac -= integer(eff_frac);
         }
      wait(1);
   }
}
action fire() {
   var eff_frac; eff_frac = 0;
wait(1);
   while(my) {
      parted_temp_vec.x = random(10.000)+-5.000;
      parted_temp_vec.y = random(10.000)+-5.000;
      parted_temp_vec.z = random(0.000)+0.000;
      vec_add(parted_temp_vec,my.x);
      if(!(total_frames % 2)) {
         eff_frac += 2.000*time_step*6.25;
         if(eff_frac >= 1){
            effect(Base_Effect2_base,integer(eff_frac),parted_temp_vec,nullvector);
             eff_frac -= integer(eff_frac);
         }
      }
      parted_temp_vec.x = random(10.000)+-5.000;
      parted_temp_vec.y = random(10.000)+-5.000;
      parted_temp_vec.z = random(0.000)+0.000;
      vec_add(parted_temp_vec,my.x);
      if(!(total_frames % 8)) {
         eff_frac += 1.000*time_step*6.25;
         if(eff_frac >= 1){
            effect(New_effect_base,integer(eff_frac),parted_temp_vec,nullvector);
             eff_frac -= integer(eff_frac);
         }
      }
      wait(1);
   }
}
/////////////////////////////////creation/////////////////////////////////

function untitled_create(VECTOR* position) {
   if(!position)position = nullvector;
   wait(3);
   you = ent_create(NULL,position,Base_Effect_emitter);
   if(you) {
      vec_add(you.x,vector(0.000,0.000,0.000));
      vec_set(you.pan,vector(0.000,0.000,0.000));
      vec_set(you.scale_x,vector(500,500,500));     //(1.000,1.000,1.000));
      set(you,PASSABLE);
      set(you,INVISIBLE);
   }
   you = ent_create(NULL,position,fire);
   if(you) {
      vec_add(you.x,vector(28.613,28.613,0.000));
      vec_set(you.pan,vector(0.000,0.000,0.000));
      vec_set(you.scale_x,vector(500,500,500));      //(1.000,1.000,1.000));
      set(you,PASSABLE);
      set(you,INVISIBLE);
   }
}


Re: Suche Feuer Shader [Re: Bastiuscha] #420187
03/20/13 23:37
03/20/13 23:37
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Superku Offline
Senior Expert
Superku  Offline
Senior Expert

Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Originally Posted By: Superku
Du solltest sowieso Partikeleffekte nur für Fackeln in der Nähe benutzen (vec_dist und/ oder CLIPPED), ansonsten vllt zu einem Sprite übergehen oder in der Ferne diese ganz ausblenden.


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends
Re: Suche Feuer Shader [Re: Superku] #420223
03/21/13 13:19
03/21/13 13:19
Joined: Jun 2008
Posts: 156
B
Bastiuscha Offline OP
Member
Bastiuscha  Offline OP
Member
B

Joined: Jun 2008
Posts: 156
Also wenn deine Zitierung jetzt auf meinem Quellcode basiert, dann werd ich wohl -einfach- auf ein paar Fackeln verzichten und gut. Denn wenn ich das könnte was du schreibst, wäre ich wohl pro genug, garnicht erst mit so nen Problem hier aufzutauchen. :-)
Aber wenn ich meine 100.000 anderen Fragen beantwortet habe, werd ich mich auch das noch anschauen. Ich komm nur aus dem Staunen nicht raus, was ihr hier alle drauf habt und frage mich immer wie ihr das alles gelernt habt. Oft sehe ich wie bei Fragen auf das Handbuch verwiesen wird. "Steht ja alles super beschrieben" Ich bin wohl allerdings zu blöd das zu verstehen, denn wenn ich diese Codebeispiele ausprobier, dann klappt das zu 10% frown
Naja mal sehen was mit mir wird. Das Interesse ist Riesig...hoffentlich reicht auch die Geduld.

Re: Suche Feuer Shader [Re: Bastiuscha] #420225
03/21/13 14:15
03/21/13 14:15
Joined: Nov 2007
Posts: 2,568
Germany, BW, Stuttgart
MasterQ32 Offline
Expert
MasterQ32  Offline
Expert

Joined: Nov 2007
Posts: 2,568
Germany, BW, Stuttgart
Originally Posted By: Bastiuscha
Ich komm nur aus dem Staunen nicht raus, was ihr hier alle drauf habt und frage mich immer wie ihr das alles gelernt habt.

Wir machen das ja auch schon seit zig Jahren, jede Woche was, manche weniger, manche mehr...
Is wie Fahrrad fahren, irgendwann denkt man fast nicht mehr drüber nach grin


Visit my site: www.masterq32.de
Re: Suche Feuer Shader [Re: MasterQ32] #420229
03/21/13 15:41
03/21/13 15:41
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Superku Offline
Senior Expert
Superku  Offline
Senior Expert

Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Ich verstehe echt nicht, wo hier nun das Problem ist oder wieso du meinem Tipp nicht folgen kannst - sorry wenn das nun etwas forsch klingt.
Vergleiche bspw. folgende Aktion:

Code:
action part_emitter()
{
while(1)
{
effect(my_effect,30,my.x,nullvector);
wait(1);
}
}



Wenn du diese Aktion nun einigen Entities in deinem Level zuweist, stößt du sehr bald an die max_particles-Grenze. Die wahrscheinlich einfachste Methode, dies zu umgehen, ist eine einfache vec_dist-Abfrage:

Code:
action part_emitter()
{
while(1)
{
if(vec_dist(my.x,camera.x) < 1000)
{
effect(my_effect,30,my.x,nullvector);
}
wait(1);
}
}



"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends
Re: Suche Feuer Shader [Re: Superku] #420230
03/21/13 16:33
03/21/13 16:33
Joined: Jun 2008
Posts: 156
B
Bastiuscha Offline OP
Member
Bastiuscha  Offline OP
Member
B

Joined: Jun 2008
Posts: 156
Vielen Dank! Ja, ich machs mir wohl immer komplizierter als es ist. Wenn ich am Ball bleibe, werd ich in 1-2 Jahren, sicher auch selber über mich lachen. Ich probier dein Beispiel mal aus.

Page 4 of 4 1 2 3 4

Moderated by  Blink, Hummel, Superku 

Gamestudio download | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1