1 registered members (Ayumi),
900
guests, and 4
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
hy freunde ich weiß nicht ob das geht.
#228945
09/23/08 17:03
09/23/08 17:03
|
Joined: Jul 2008
Posts: 191
MDMDFSS
OP
Member
|
OP
Member
Joined: Jul 2008
Posts: 191
|
Ich habe 3D Gamestudios6.40 und Gamestudios6 extra die neuere version, und ich frage mich ob man so vielfältige gegener coden kann: http://www.youtube.com/watch?v=WXydrY6-Wxg (ich habe noch nichts angefangen ich weiß nicht wie ich so einen script schreiben soll). danke in vorraus
Last edited by MDMDFSS; 09/23/08 17:04.
|
|
|
Re: hy freunde ich weiß nicht ob das geht.
[Re: MDMDFSS]
#229537
09/28/08 13:18
09/28/08 13:18
|
Joined: Sep 2003
Posts: 5,900 Bielefeld, Germany
Pappenheimer
Senior Expert
|
Senior Expert
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
|
Das geht alles, du mußt nur bedenken, dass das 100te von Funktionen, Variablen, Skills und States erfordert. Du mußt aber einfach anfangen, oder dir jeden Bestandteil genau über legen, und Stück für Stück aufbauen und testen, z.B. ein stationäres Geschütz, oder ein Gegner, der auf einen bestimmten Abstand an den Spieler herankommt und dann stehen bleibt, dann mußt du dir solche Sachen überlegen, wie du feststellst, wenn der Gegner zuschlägt, ob er den Spieler getroffen hat oder nicht, usw.
Wenn du im Forum nach den Posts von jumpman suchst, findest du eine Menge interessanter Sachen dazu. Er hat bislang die vielfältigsten Gegner im Forum präsentiert.
|
|
|
Re: hy freunde ich weiß nicht ob das geht.
[Re: Pappenheimer]
#229681
09/29/08 15:49
09/29/08 15:49
|
Joined: May 2008
Posts: 301
Oxy
Senior Member
|
Senior Member
Joined: May 2008
Posts: 301
|
So wie ich das gesehen hab ist das kein wirklich großes "KI" problem. Ist im grunde eine sehr gescriptete sequenz, mit festen abläufen.
Die arbeit steckt eher in den animationen.
Das Vieh läuft eigendlich nur recht einfache wege entlang des steges, und spielt in regelmäßigen abständen verschiedene angriffanimationen. Ist der spieler an einem bestimmten punkt/areal bekommt er schaden, ansonsten nicht.
Der spieler schießt auch recht einfach auf eine markierte Fläche. Nicht das Monster selber ist das ziel, sondern diese Zielfläche.
In einer geskripteten Sequenz muss man den Reakten ausweichen und irgendwelche Viecher gleich mit den explosionen töten.
Also für einen erfahreren Programmierer keine hexenarbeit. Ist eher interessant für einen Animator und Texturkünstler.
Als Anfäner ist das aber immer noch eine Latte zu kompliziert.
---
Gamedesigntechnisch ist das ein typisches Konsolenspiel. Im gegensatz zum pc, wo die KI ein große rolle spielt, sind diese playstationspiele sehr linear. Die herreuasforderung ist eher zum richtigen zeitpunkt genau die richtige aktion zu machen. konsolenspieler verbringen an einer solchen sequenz viel mehr zeit als pc spieler. (deswegen sehen die sequenzen auch so gut aus: sie sind sehr stark geskriptet) Hingegen möchte man auf dem pc komplexere welten haben, die man frei erforschen kann. Solche fights sind dann eher nicht drin. da man dynamisch sowas einfach kaum machen kann.
Last edited by Oxy; 09/29/08 16:06.
|
|
|
Re: hy freunde ich weiß nicht ob das geht.
[Re: Oxy]
#229688
09/29/08 16:38
09/29/08 16:38
|
Joined: Jul 2008
Posts: 191
MDMDFSS
OP
Member
|
OP
Member
Joined: Jul 2008
Posts: 191
|
Vieleicht kannst du mir helfen ich habe schon anfänge. (Ich habe GS 6.40 und arbeite mit den Templates):
////////////////////////////////////////////////////////
var enemy_distance; var eball_speed; var eball_pos;
define sword_base = skill12; define sword_tip = skill15;
//////////////////////////////////////////////////////////////
function energy_ball(); function remove_eball();
//////////////////////////////////////////////////////////////
font swc_font = <font.pcx>, , 24, 23;
//////////////////////////////////////////////////////////////
sound auf_sound = <auf.wav>; sound energy_snd = <energy.wav>;
//////////////////////////////////////////////////////////////
string energyball_mdl = <energy.mdl>; string health_str = "Enemy Health:";
///////////////////////////////////////////////////////////////
entity* enemy; ///////////////////////////////////////////////////////////////
panel health_panel { pos_x = 0; pos_y = 0; digits = 550, 575, 4, swc_font, 1, enemy.healthpoints; flags = refresh, visible; }
text health_text { pos_x = 0; pos_y = 550; font = swc_font; string = health_str; flags = visible; }
////////////////////////////////////////////////////////////////
function main() { clip_size = 0; on_d = null; fps_max = 40; }
action boss1_fight // attached to the enemy { enemy = me; enemy.healthpoints = 500; while (my.healthpoints > 0) { if (vec_dist (my.x, player.x) < 200 && player.healthpoints > 0) { vec_set(temp, player.x); vec_sub(temp, my.x); vec_to_angle(my.pan, temp); my.tilt = 0; enemy_distance.x = 8 * time; enemy_distance.y = 0; enemy_distance.z = 0; ent_move(enemy_distance, nullvector); ent_cycle("walk", my.skill19); my.skill19 += 5 * time; if (my.skill19 > 100) {my.skill19 = 0;} if (vec_dist (my.x, player.x) < 50) { my.skill20 = 0; while (my.skill20 < 100) { ent_vertex(my.sword_tip, 0); ent_vertex(my.sword_base, 0); trace_mode = ignore_me + ignore_passable; trace (my.sword_base, my.sword_tip); if (result != 0) { if (you == player) { player._health -= 5; } ent_cycle("attack", my.skill20); my.skill20 += 5 * time; wait (1); } waitt (6); } } else { ent_cycle("stand", my.skill21); my.skill21 += 2 * time; if (my.skill21 > 100) {my.skill21 = 0;} } wait (1); } if (vec_dist (my.x, player.x) <210 ) { my.skill21 = 0; while (my.skill21 < 100) { eball_pos.x = my.x; eball_pos.y = my.y; eball_pos.z = my.z + 25; ent_create (energyball_mdl, eball_pos, energy_ball); snd_play (energy_snd, 70, 0); waitt (16); } } else { ent_cycle("stand", my.skill21); my.skill21 += 2 * time; if (my.skill21 > 100) {my.skill21 = 0;} } wait (1); } while (my.skill22 < 80) / { ent_cycle("death", my.skill22); my.skill22 += 1 * time; wait (1); } my.passable = on; }
function energy_ball() { wait (1); my.enable_entity = on; my.enable_block = on; my.event = remove_eball; my.pan = you.pan; my.tilt = you.tilt; my.lightred = 250; my.lightgreen = 150; my.lightrange = 200; eball_speed.x = 20; eball_speed.y = 0; eball_speed.z = 0; eball_speed *= time; while (my != null) { my.roll += 20 * time; move_mode = ignore_you + ignore_passents; ent_move (eball_speed, nullvector); wait (1); } }
function remove_eball() { wait (1); if (you == player) { player._health -= 25; } ent_remove (me); }
noch sind ein paar fehlermeldungen, probieren sie mal diesen script vieleicht können sie mir helfen.
Last edited by MDMDFSS; 09/29/08 16:40.
|
|
|
Re: hy freunde ich weiß nicht ob das geht.
[Re: MDMDFSS]
#230131
10/03/08 00:04
10/03/08 00:04
|
Joined: Sep 2003
Posts: 5,900 Bielefeld, Germany
Pappenheimer
Senior Expert
|
Senior Expert
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
|
noch sind ein paar fehlermeldungen, probieren sie mal diesen script vieleicht können sie mir helfen. So etwas wirst Du selbst machen müssen. Wenn mehrere Fehlermeldungen kommen und Dir die Fehlermeldungen nicht die Lösung zeigen, ist das Skript noch zu kompliziert für Dich. Du solltest Dein Skript Schritt für Schritt aufbauen. In winzigen Schritten. Du mußt selbst jede Zeile und ihren Zusammenhang zu den anderen verstehen, sonst wirst Du nicht damit weiterkommen. Wenn Du ein kleines Stück Code hast, das funktioniert, und Du fügst etwas hinzu, wodurch Fehlermeldungen erscheinen, die Du Dir nicht erklären kannst, kannst Du das nochmal hier posten, inklusive Fehlermeldungen. Wenn das dann funktioniert und Du möchtest eine Funktionsweise hinzufügen und hast keine rechte Idee, wie, dann kannst Du dazu eine Frage stellen.
|
|
|
Re: hy freunde ich weiß nicht ob das geht.
[Re: Pappenheimer]
#230147
10/03/08 08:19
10/03/08 08:19
|
Joined: Jul 2008
Posts: 191
MDMDFSS
OP
Member
|
OP
Member
Joined: Jul 2008
Posts: 191
|
|
|
|
|