Portal-Zone Gothic-Zone Gothic II-Zone Gothic 3-Zone Gothic 4-Zone Modifikationen-Zone Download-Zone Foren-Zone RPG-Zone Almanach-Zone Spirit of Gothic

 

Seite 8 von 15 « Erste ... 456789101112 ... Letzte »
Ergebnis 141 bis 160 von 292
  1. Homepage besuchen Beiträge anzeigen #141 Zitieren
    General Avatar von Dada
    Registriert seit
    Jan 2007
    Ort
    Krefeld
    Beiträge
    3.729
     
    Dada ist offline
    "Nummer 1 nervt mich besonders, weil ich mit der Gothic 1 Steuerung gar nicht umgehen kann."

    Naja, zumindest fast. Mich würde es freuen, wenn es unabhängig funktionieren würde.

    Ansonsten fände ich es gut, wenn man die "Fokusreichweite" einstellen könnte, also die Entfernung auf die Namen und Lebensbalken angezeigt werden

  2. Beiträge anzeigen #142 Zitieren
    now also in your universe  Avatar von Milky-Way
    Registriert seit
    Jun 2007
    Beiträge
    15.244
     
    Milky-Way ist offline
    Bei LoA werden wir es vermutlich optional einbauen, wenn wir dazu kommen. Hauptsächlich haben wir nicht die Kapazität, dafür ein eigenes Balancing abzustimmen. Schwierigkeit des Bogenschießens und Anzahl benötigter Pfeile ändern sich ja schon. Letzteres kann insbesondere problematisch sein, wenn es "besondere" Pfeile in begrenzter Stückzahl gibt. Daher würden wir vermutlich die Option nutzen, dass Pfeile nicht wieder eingesammelt werden können. (Dafür gab es doch eine ganz einfache Variable, die wir umstellen können?)

    Ein Grund ist natürlich auch, dass wir nicht (zusätzliches) Fehlerpotential einbauen wollen. Daher haben wir es nicht direkt bei uns eingebaut sondern warten erst mal das Feedback auf deine Mod ab. Zu gegebener Zeit würden wir das dann auswerten und die aktuellste Version einbauen (ist noch eine Weile hin, bis LoA ganz fertig ist). Sollte es zu dem Zeitpunkt schwerwiegende Fehler geben, würden wir es wohl nicht einbauen. (Dieser Punkt ist aber allgemein und auf kein bestehendes Problem bezogen, für dich im Moment also vermutlich wenig nützlich. Vielleicht erklärt er aber, wieso nicht ganz so viel Feedback kam, falls andere Projekte eine ähnliche Strategie gewählt haben.)

  3. Beiträge anzeigen #143 Zitieren
    Moderator Avatar von ukur
    Registriert seit
    Jan 2009
    Ort
    Ukraine
    Beiträge
    281
     
    ukur ist offline
    Hi, I use to hero and NPC's custom LeGo bars for HP that colored to green when its poisoned. For NPC's I get other.attribute[ATR_HITPOINTS], other.attribute[ATR_HITPOINTS_MAX] and other aivar for poison status from Loop functioun with "if(Hlp_Is_oCNpc(her.focus_vob))" or "if(Npc_GetTarget(hero))", that work before I start use free aim. When I start aiming with bow, crossbow or magic, function don't get other attributes to custom bars. How I can solved this problem?

  4. Beiträge anzeigen #144 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    That's because Free Aim is using a helper vob (I think), which obviously is a zCVob, not an oCNpc.

    The cleanest solution would be to hook at the point the bar is drawn and just use the corresponding NPC. That does require reading the assembly to figure out which register he's hiding in, though...

  5. Beiträge anzeigen #145 Zitieren
    Ehrengarde Avatar von mud-freak
    Registriert seit
    Dec 2005
    Beiträge
    2.199
     
    mud-freak ist offline
    Danke schonmal für das Feedback zu möglichen Verbesserungen. Die sind sehr hilfreich.
    Dazu schon mal ein paar Worte: Eine Unterstützung für die Gothic 2 Steuerung ist schon (fast) fehlerfrei implementiert. Ebenso einige andere Bugfixes (Performance, Schussverhalten, AI), dazu habe ich in Post 140 Häkchen neben die Auflistung gesetzt um zu zeigen was schon verbessert ist.


    Zitat Zitat von Dada Beitrag anzeigen
    Ansonsten fände ich es gut, wenn man die "Fokusreichweite" einstellen könnte, also die Entfernung auf die Namen und Lebensbalken angezeigt werden
    Bei Zaubern läuft das nach wie vor über deren einzeln anpassbare Eigenschaft C_Spell.targetCollectRange (siehe z.B. Todeshauch), für den Fernkampf kann man diese diese Konstante anpassen. Standardmässig habe ich sie auf 50 Meter eingestellt. Ohne freies Zielen ist in Gothic die Standard-Fokusreichweite 35 Meter. Ich habe 50 Meter gewählt, weil man tatsächlich weiter schiessen kann, egal wie weit nun die Fokuserfassung reicht. Die Konstante in eine Variable zu ändern würde erlauben, die Fokuserfassung während des Spiels anzupassen (z.B. durch Talente). Allerdings fände ich das etwas unglücklich, weil man ja schon weit genug schauen und schiessen kann - die Fokusreichweite zu verringern würde den Spieler also nur "nerven".


    Zitat Zitat von Milky-Way Beitrag anzeigen
    Bei LoA werden wir es vermutlich optional einbauen, wenn wir dazu kommen. Hauptsächlich haben wir nicht die Kapazität, dafür ein eigenes Balancing abzustimmen. Schwierigkeit des Bogenschießens und Anzahl benötigter Pfeile ändern sich ja schon. Letzteres kann insbesondere problematisch sein, wenn es "besondere" Pfeile in begrenzter Stückzahl gibt. Daher würden wir vermutlich die Option nutzen, dass Pfeile nicht wieder eingesammelt werden können. (Dafür gab es doch eine ganz einfache Variable, die wir umstellen können?)
    Danke für den Einblick in den - ich nenn es mal - Entscheidungsprozess. Das hilft mir das ganze besser zu verstehen. Tatsächlich muss ich zugeben, dass das sehr gerechtfertigte Einwände sind. Hier schon mal ein paar Gedanken dazu, was bisher schon möglich ist und was ich verbessern will:
    • Die Option Pfeile aufzusammeln (siehe diese Konstante in der Config) lässt sich tatsächlich ausstellen.
    • Die Pfeile aufsammeln zu können ist allerdings ein übergreifendes Feature, dass auch aktiv ist, wenn man freies Zielen im Menu deaktiviert. Das bedeutet, man könnte Pfeile aufsammelbar machen und - weil es nicht über das Menu an- und ausstellbar ist - ergeben sich dadurch keine weiteren Balancingprobleme (weil es immer an ist).
    • Unter welchen Umständen Pfeile aufsammelbar sind, kann man in der Config hier (Kollision mit Welt/Objekten) und hier (Kollision mit NPCs) genaustens definieren. Wie dort schon beispielhaft eingebaut, kann man dort einen Zufallswert, oder eine Abhängigkeit von Oberflächenmaterial und -textur abfragen. Genauso könnte man dort auch festlegen, dass "besondere" Pfeile immer beim Aufprall zerstört werden, um sie als "Einwegpfeile" zu definieren und deren übermässigen Einsatz zu kontrollieren/balancieren.
    • Auf der anderen Seite ist es aber auch richtig, dass man im bisherigen Zustand mit freiem Zielen wesentlich häufiger trifft als ohne. Wie die Streuung mit dem Bogen-/Armbrusttalent zusammenhängt überarbeite ich gerade und will die Trefferchance mit ohne-freies-Zielen abgleichen, um das Balanceproblem zwischen freiem Zielen und normalem Zielen auszuräumen.
    • Generell will ich G2FreeAim so verbessern, dass es technisch keine Imbalance mehr zwischen freiem Zielen und ohne-freiem-Zielen gibt. Das sollte das nahtlose Einbauen in ein Modprojekt dann einfacher machen.

    Zitat Zitat von ukur Beitrag anzeigen
    Hi, I use to hero and NPC's custom LeGo bars for HP that colored to green when its poisoned. For NPC's I get other.attribute[ATR_HITPOINTS], other.attribute[ATR_HITPOINTS_MAX] and other aivar for poison status from Loop functioun with "if(Hlp_Is_oCNpc(her.focus_vob))" or "if(Npc_GetTarget(hero))", that work before I start use free aim. When I start aiming with bow, crossbow or magic, function don't get other attributes to custom bars. How I can solved this problem?
    Zitat Zitat von Lehona Beitrag anzeigen
    That's because Free Aim is using a helper vob (I think), which obviously is a zCVob, not an oCNpc.
    Although Lehona is right about the helper vob, this does not affect the focus vob. her.focus_vob is maintained and it should work (after all the npc you are aiming at still appears in the focus). Npc_GetTarget, however, is always set to zero by G2FreeAim for different reasons. I could look into reworking that. Can you confirm that "if(Hlp_Is_oCNpc(her.focus_vob))" does actually work?
    Nevertheless, I think Lehona's suggestion for hooking the healthbars directly might be more elegant and reliable anyway.

  6. Beiträge anzeigen #146 Zitieren
    Moderator Avatar von ukur
    Registriert seit
    Jan 2009
    Ort
    Ukraine
    Beiträge
    281
     
    ukur ist offline
    Zitat Zitat von mud-freak Beitrag anzeigen
    Can you confirm that "if(Hlp_Is_oCNpc(her.focus_vob))" does actually work?
    I try "if(Npc_GetTarget(hero))", then "if(Hlp_Is_oCNpc(her.focus_vob))", both don't working with free aim.

    That block working if I don't freeaim mode.

    Code:
    	if(Hlp_Is_oCNpc(her.focus_vob))
    	{
    		var c_npc targetNpc; targetNpc = MEM_PtrToInst(her.focus_vob);
    		Bar_SetMax(NPC_HPBar, targetNpc.attribute[ATR_HITPOINTS_MAX]);  		Bar_SetValue(NPC_HPBar, targetNpc.attribute[ATR_HITPOINTS]);
    		if(NPC_HPBarShow == FALSE)		{
    			Bar_Show(NPC_HPBar);
    			NPC_HPBarShow = TRUE;
    		};
    		if(targetNpc.aivar[AIV_NPCIsPoisoned] > 0)
    		{
    			Bar_SetBarTex(NPC_HPBar, "Bar_Poison_Mod.tga");
    		}
    		else
    		{
    			Bar_SetBarTex(NPC_HPBar, "Bar_Health_Mod.tga");
    		};
    	};
    Geändert von ukur (03.03.2017 um 13:39 Uhr)

  7. Beiträge anzeigen #147 Zitieren
    Ehrengarde Avatar von mud-freak
    Registriert seit
    Dec 2005
    Beiträge
    2.199
     
    mud-freak ist offline
    Zitat Zitat von ukur Beitrag anzeigen
    I try "if(Npc_GetTarget(hero))", then "if(Hlp_Is_oCNpc(her.focus_vob))", both don't working with free aim.

    That block working if I don't freeaim mode.

    Code:
    	if(Hlp_Is_oCNpc(her.focus_vob))
    	{
    		var c_npc targetNpc; targetNpc = MEM_PtrToInst(her.focus_vob);
    		Bar_SetMax(NPC_HPBar, targetNpc.attribute[ATR_HITPOINTS_MAX]);  		Bar_SetValue(NPC_HPBar, targetNpc.attribute[ATR_HITPOINTS]);
    		if(NPC_HPBarShow == FALSE)		{
    			Bar_Show(NPC_HPBar);
    			NPC_HPBarShow = TRUE;
    		};
    		if(targetNpc.aivar[AIV_NPCIsPoisoned] > 0)
    		{
    			Bar_SetBarTex(NPC_HPBar, "Bar_Poison_Mod.tga");
    		}
    		else
    		{
    			Bar_SetBarTex(NPC_HPBar, "Bar_Health_Mod.tga");
    		};
    	};
    Thank you for the code. I will look into it.

  8. Beiträge anzeigen #148 Zitieren
    Ehrengarde Avatar von mud-freak
    Registriert seit
    Dec 2005
    Beiträge
    2.199
     
    mud-freak ist offline
    Zitat Zitat von ukur Beitrag anzeigen
    I try "if(Npc_GetTarget(hero))", then "if(Hlp_Is_oCNpc(her.focus_vob))", both don't working with free aim.

    That block working if I don't freeaim mode.
    I cannot reproduce your problem. For me it works. This is the code I used, called every frame by FrameFunction (yours is grey):
    Code:
    FF_ApplyOnce(ff_herFocus); // In INIT_Global
    
    /* ... */
    
    func void ff_herFocus() {
    
        var int NPC_HPBarShow;
        var int NPC_HPBar;
        if(!Hlp_IsValidHandle(NPC_HPBar)) {
            NPC_HPBar = Bar_Create(GothicBar@);
        };
    
        var oCNpc her; her = Hlp_GetNpc(hero);
        if(Hlp_Is_oCNpc(her.focus_vob))
        {
            var c_npc targetNpc; targetNpc = MEM_PtrToInst(her.focus_vob);
            MEM_Info(targetNpc.name); // DEBUG
            Bar_SetMax(NPC_HPBar, targetNpc.attribute[ATR_HITPOINTS_MAX]);
            Bar_SetValue(NPC_HPBar, targetNpc.attribute[ATR_HITPOINTS]);
            if(NPC_HPBarShow == FALSE)
            {
                Bar_Show(NPC_HPBar);
                NPC_HPBarShow = TRUE;
            };
            //if(targetNpc.aivar[AIV_NPCIsPoisoned] > 0)
            //{
            //    Bar_SetBarTex(NPC_HPBar, "Bar_Poison_Mod.tga");
            //}
            //else
            //{
            //    Bar_SetBarTex(NPC_HPBar, "Bar_Health_Mod.tga");
            //};
        } else if (NPC_HPBarShow) {
            Bar_Hide(NPC_HPBar);
            NPC_HPBarShow = FALSE;
        };
    };
    You could add this debugging output (marked in green) to your code, to check whether the problem doesn't lie somewhere else. Maybe you could provide more context when your function is called. Is it called every frame, is it a hook, etc.?

  9. Beiträge anzeigen #149 Zitieren
    Moderator Avatar von ukur
    Registriert seit
    Jan 2009
    Ort
    Ukraine
    Beiträge
    281
     
    ukur ist offline
    Zitat Zitat von mud-freak Beitrag anzeigen
    I cannot reproduce your problem. For me it works. This is the code I used, called every frame by FrameFunction (yours is grey)
    I use that function FF_ApplyOnce(B_GlobalLoop); in first dialog with first NPC.

    Zitat Zitat von mud-freak Beitrag anzeigen
    You could add this debugging output (marked in green) to your code, to check whether the problem doesn't lie somewhere else. Maybe you could provide more context when your function is called. Is it called every frame, is it a hook, etc.?
    Name NPC in focus write in LOG, but i also see custom NPC HP bar while I not use aiming.
    "[i] [....2354...]
    [i] 00:17 Info: 0 Q: Диего
    [i] 00:17 Info: 0 Q: Диего
    [i] 00:17 Info: 0 Q: Диего
    [i] 00:17 Info: 0 Q: Диего
    [i] 00:17 Info: 0 Q: Диего
    [i] 00:17 Info: 0 Q: Диего
    [i] 00:17 Info: 0 Q: Диего
    [i] 00:17 Info: 0 Q: Диего
    [i] 00:17 Info: 0 Q: Диего
    [i] 00:17 Info: 0 Q: Диего
    [i] 00:17 Info: 0 Q: Диего
    [i] 00:17 Info: 0 Q: Диего
    [i] 00:17 Info: 0 Q: Диего"

    And screenshot...
    Anhang 45371

    UPD!
    Thank you very much for your help! The mistake was in my carelessness in big lines functions. I use script for show NPC HP bar with new condition if(Hlp_Is_oCNpc(her.focus_vob))
    Code:
    		if(NPC_HPBarShow == FALSE)
                    {
    			Bar_Show(NPC_HPBar);
    			NPC_HPBarShow = TRUE;
    		};
    but i forgot old condition if(Npc_GetTarget(hero)) to hide NPC HP bar.
    Now i use Show and Hide condition with if(Hlp_Is_oCNpc(her.focus_vob)) and HP NPC bar normal functions!
    Geändert von ukur (03.03.2017 um 21:21 Uhr)

  10. Beiträge anzeigen #150 Zitieren
    Ehrengarde Avatar von mud-freak
    Registriert seit
    Dec 2005
    Beiträge
    2.199
     
    mud-freak ist offline

    v0.2.0-alpha

    Ich habe zwar seit März nicht daran weiterarbeiten können und werde dazu auch bis auf weiteres erst einmal keine Zeit für haben, aber hier ein wenig alte Neuigkeiten.
    Weil ich einige Änderungen seit v0.1.2 als wichtig erachte, wollte ich mittels eines "Pre-Releases" darauf hinweisen. Vielleicht hat sogar jemand Lust die vermerkten Änderungen anzutesten. Dieses Pre-Release ist ein Vorgeschmack auf einige weitere nette Verbesserungen, die ca. im Juni/Juli in v1.0.0 erscheinen werden.

    Wichtig:
    Diesmal (auch aus Gründen des Zeitmangels) ist kein automatisches Setup dabei. Das auch aus dem Grund, weil sich die Dateistruktur komplett geändert hat. Eine Abwärtskompatibilität ist also nur aufgrund der Funktionsnamen, nicht aber auf den Dateinamen gewährleistet. Die bisherigen G2 Free Aim Content-Skripte sollten also entfernt werden. Dazu reicht es lediglich den Ordner _work\data\Scripts\Content\freeAim zu löschen. Mögliche Änderungen in der Config sollten vorher gesichert werden und können problemlos in den gleichnamigen Funktionen anschliessend wieder eingetragen werden. Die Config ist nun aufgeteilten in verschiedene Dateien, die sich im Unterordner freeAim\config befinden.

    Die Änderungen enthalten einige Bug-Fixes, Verbesserungen und eine erste Unterstützung der Gothic 2 Steuerung. Ich empfehle diese neuen Skripte besonders wegen eines enormen Performance-Boosts.

    v0.2.0-alpha - 2017-03-05 10:32 (English release notes on Github):
    • Code in verschiedene Dateien aufgeteilt (bessere Lesbarkeit)
    • Erste Implementierung für Gothic 2 Steuerung (Stabilität bisher nicht vollständig getestet)
    • Verbesserter Umgang mit Trace Rays (ca. zehn-facher Performance-Boost)
    • Zauber stoppen nun nicht mehr mitten in der Luft (siehe Post)
    • Flugbahn von Projektilen korrigiert (diese fliegen nun vernünftig aufs Fadenkreuz zu)
    • Neue kritische Trefferzonen für (fast) alle Gothic 2 Wesen (siehe hier für eine Liste) - alles Headshots. Bisher war die Trefferzone zu gross und nicht für jedes Wesen angepasst.
    • Bugfix für nicht reagierende KI, wenn man aus zu weiter Entfernung schiesst (siehe Post)

    Download auf Github

    Da es sich nur um ein "Pre-Release" handelt, sind die Änderungen nicht ausgiebig getestet. Wenn also jemand einen Bug entdeckt würde ich mich über Feedback freuen.
    Geändert von mud-freak (24.04.2017 um 19:19 Uhr)

  11. Beiträge anzeigen #151 Zitieren
    Auserwählter Avatar von Simon
    Registriert seit
    Dec 2007
    Ort
    Kiefersfelden
    Beiträge
    6.620
     
    Simon ist offline
    Echt toll, dass du immer noch am Freien Zielen weiterarbeitest!

    Leider bin ich was Scripts betrifft, nie weit über Quests, Startup und PFX hinausgekommen.
    D.h. wenn ich was testen sollte, bräuchte ich Ikarus und LeGo - kann ich sonst noch was falsch machen? Gut möglich, dass ich ansonsten Bugs reporte, die nur meiner unzureichenden Fähigkeiten zuzuschreiben sind.
    Risenmodkit
    "Du sagst mir jetzt, was du weißt, oder es gibt ein paar auf's Maul, Paul!"

  12. Beiträge anzeigen #152 Zitieren
    Ehrengarde Avatar von mud-freak
    Registriert seit
    Dec 2005
    Beiträge
    2.199
     
    mud-freak ist offline
    Zitat Zitat von Simon Beitrag anzeigen
    Echt toll, dass du immer noch am Freien Zielen weiterarbeitest!

    Leider bin ich was Scripts betrifft, nie weit über Quests, Startup und PFX hinausgekommen.
    D.h. wenn ich was testen sollte, bräuchte ich Ikarus und LeGo - kann ich sonst noch was falsch machen? Gut möglich, dass ich ansonsten Bugs reporte, die nur meiner unzureichenden Fähigkeiten zuzuschreiben sind.
    Danke. Das ist gut zu hören!
    Du kannst dich mal dran versuchen. Hier gibt es eine Installationsanleitung, die, wie ich mittlerweile finde, sehr kompliziert wirkt. Sollte ich dann auch mal ändern. Ab Punkt vier sind die Anweisung etwas umständlich. Falls es also nicht hinhaut, meld dich ruhig hier noch einmal. Im Grunde ist die Installation nicht so wild.

    EDIT:

    Hier ein paar Anstösse für dich zum Vergleichen.

    Am Ende sollte der Anfang deiner Gothic.src ca. so aussehen:
    Spoiler:(zum lesen bitte Text markieren)
    Code:
    _INTERN\CONSTANTS.D
    _INTERN\CLASSES.D
    
    Ikarus\Ikarus_Const_G2.d
    Ikarus\EngineClasses_G2\*.d
    Ikarus\Ikarus.d
    Ikarus\float.d
    
    Lego\Header.src
    
    AI\AI_INTERN\AI_CONSTANTS.D
    AI\AI_INTERN\BODYSTATES.D
    AI\AI_INTERN\FOCUS.D
    AI\AI_INTERN\Npc_SetToMad.d
    AI\AI_INTERN\Species.d
    AI\AI_INTERN\PrintDebug.d
    AI\AI_INTERN\PrintPlus.d
    
    freeAim\freeAim.src
    
    
    ...

    Die Startup.d in etwa so:
    Spoiler:(zum lesen bitte Text markieren)
    Code:
    ...
    
    func void INIT_GLOBAL()
    {
        // wird fuer jede Welt aufgerufen (vor INIT_<LevelName>)
        Game_InitGerman();
    
        ...
    
        // Ikarus initialisieren
        MEM_InitAll();
    
        // LeGo initialisieren
        LeGo_Init(LeGo_FrameFunctions | LeGo_ConsoleCommands);
    
        // G2 Free Aim initialisieren
        freeAim_Init();
    
        ...
    };
    
    ...

    Was die Menü-Skripte angeht, weiss ich das gerade nicht auswendig und kann das leider gerade nicht genau nachschauen. Zur Not kannst du alles ab Punkt vier in der Installationsanleitung weglassen - dort wird nur die Menü-Option zum An- und Ausschalten eingepflegt. Obwohl das fürs Testen nicht ganz unwichtig wäre (z.B. ob an- und ausschalten auch mit aktivierter Gothic 2 Steuerung funktioniert).
    Vielleicht kann dort jemand aushelfen, wie das Skript _work\data\Scripts\System\Menu\Menu_Opt_Game.d anschliessend aussieht.
    Geändert von mud-freak (25.04.2017 um 12:20 Uhr) Grund: Installationshinweise hinzugefügt

  13. Homepage besuchen Beiträge anzeigen #153 Zitieren
    Apprentice Avatar von Migos
    Registriert seit
    Mar 2016
    Beiträge
    45
     
    Migos ist offline
    Falls ein Multi Arrow System noch nicht drin ist: https://forum.worldofplayers.de/foru...i-Arrow-System
    [Bild: spineSignature.php?name=Migos]
    Entwickler von Jharkendar-Online Deathmatch & Roleplay (zu finden in Spine).
    Komm doch auf unseren Discord und lerne unsere nette Community kennen.
    Mal gucken, was gerade entwickelt wird? Hier ist unsere Roadmap.

  14. Beiträge anzeigen #154 Zitieren
    Ehrengarde Avatar von mud-freak
    Registriert seit
    Dec 2005
    Beiträge
    2.199
     
    mud-freak ist offline
    Zitat Zitat von Migos Beitrag anzeigen
    Falls ein Multi Arrow System noch nicht drin ist: https://forum.worldofplayers.de/foru...i-Arrow-System
    Werde ich mir dann mal anschauen. Obwohl es auf den ersten Blick so aussieht, als gäbe es einiges an Einschränkungen mit der Implementierung.

  15. Beiträge anzeigen #155 Zitieren
    Ehrengarde Avatar von mud-freak
    Registriert seit
    Dec 2005
    Beiträge
    2.199
     
    mud-freak ist offline
    Hallo, ich habe eine Frage und würde mich sehr über Meinungen und Ideen freuen.

    Sorry für diesen langen Post. Ich habe versucht mein Problem möglichst einfach zu erklären, dass jeder seinen Senf dazu geben kann. Bitte teilt doch eure Gedanken und Ideen dazu, denn ich steh komplett auf dem Schlauch und weiss da echt nicht weiter.
    Wer möchte kann es als Rätsel oder Knobelaufgabe beachten. Vielen Dank an alle, die sich die Zeit nehmen, den Text durchzulesen.


    Ein bisher verbleibender Nachteil beim freien Zielen ist es, dass sich das Bogentalent nicht mit der Trefferchance übereinstimmen lässt. Im Charaktermenu bedeutet 10% Bogentalent klassisch, dass 10% aller Schüsse treffen. Im Original wird das einfach per Zufallszahl gewährleistet, beim freien Zielen sieht man aber wie ein Pfeil physikalisch trifft oder nicht. Das freie Zielen muss also wirklich 10% der Pfeile treffen lassen, gleichzeitig aber auch 100% der Pfeile bei 100% Bogentalent.

    Nun wo ist das Problem?
    Gothics Hitregistration (also wann ein Pfeil einen NPC trifft oder nicht) hängt nicht vom Model, sondern rein von den Boundingboxen ab. Ein Gegner ist also eine riesen Zielscheibe, da die Boundingbox sehr grosszügig gross ist. Pfeile bei 10% Bogentalent müssen also mit sehr grosser Streuung verschickt werden, damit wirklich nur 10% der Pfeile treffen und auch wieder 100% der Pfeile bei 100% Bogentalent. Also einfach alles hochskalieren.

    Problem gelöst?
    Leider nicht, denn damit auch wirklich erst bei 100% alle Pfeile treffen und nicht schon bei 80% oder 90% muss die Streuung bis zu letzt eine gewisse Grösse haben. Das führt aber dazu, dass kritische Treffer komplett nutzlos werden, denn bei 100% ist die Streuung noch so gross, dass es viel zu schwer wird einen kritischen Treffer (z.B. einen Kopfschuss) verlässlich zu landen. Das kann man nicht als 100% Talent verkaufen (sieht auch dumm aus, wenn man mit 100% immer noch nicht genau dahin schiesst wo man hinzielt).

    Ein Beispiel-video im Spiel kann ich leider gerade nicht entwerfen aber hier einige Illustrationen:


    [Bild: freeAimScattering.png]
    Im ersten Bild links seht ihr das Szenario mit der Streuung. Ein Schuss kann, je nach Bogentalent, mit bestimmten Winklen (grün und blau) von der perfekten Flugbahn abweichen und in dem grauen Umkreis mit entsprechendem Radius landen. (Oben drüber steht noch mal die Angabe von 15 Metern um es mit den Originaltrefferchancen zu vergleichen. Nicht so wichtig.)
    Rechts im ersten Bild sind zwei Fälle (A und B) mit exemplarischen Werten gelistet.
    • In A stimmt das Bogentalent mit der Trefferchance überein (grün), aber kritische Treffer sind selbst bei 100% Bogentalent noch sehr schwierig, wegen zu grosser Streuung (2° in alle Richtungen, rot).
    • In B sind kritische Treffer mit 100% Bogentalent wirklich verlässlich zu treffen (fast 0° Abweichung vom perfekten Schuss, grün), dafür entspricht das Bogentalent nicht der Trefferchance (man trifft viel zu häufig, da die Streuung insgesamt zu klein ist).


    [Bild: figureScatter_AB.png]
    Im zweiten Bild sind diese beiden Fälle A und B noch einmal anders visualisiert. Für vier verschiedene Bogentalente (10%, 40%, 75% und 100%) sind in blau die Treffer markiert und in rot verfehlte Schüsse (500 "Schüsse" insgesamt). Der graue Kreis zeigt, welcher Radius als Treffer behandelt wird, was durchschnittlich ziemlich gut mit der Grösse der Boundingboxen übereinstimmt.
    In B (unten im zweiten Bild) ist das Bogentalent auch so mit den Treffern skaliert, dass genau alles so trifft wie es soll, nur eben mit viel viel kleinerer Streuung. Dadurch trifft man mit 100% Bogentalent genau wo man hinzielt, allerdings treffen Bogentalente wie 10% viel zu häufig, da die Hitregistrierung bei NPCs halt sehr grob ist.

  16. Beiträge anzeigen #156 Zitieren
    now also in your universe  Avatar von Milky-Way
    Registriert seit
    Jun 2007
    Beiträge
    15.244
     
    Milky-Way ist offline
    Theoretisch ließe sich eine 10% Treffer-Wahrscheinlichkeit ja auch so einbauen:
    Mit 10% Wahrscheinlichkeit landet der Pfeil genau dort, wo man hinzielt.
    Mit 90% Wahrscheinlichkeit verzieht er sehr stark (sagen wir mal, jeweils 10-20 Grad daneben nach links / rechts und oben / unten).

    Deine bisherige Methode scheint mir ja eher in die Richtung zu gehen, dass es einen kleiner werdenden Kreis gibt, in den man schießt und dann innerhalb des Kreises zufällig getroffen wird, so dass insgesamt die Trefferwahrscheinlichkeit in etwa passend ist.

    Ich könnte mir vorstellen, dass eine Kombination der beiden Methoden im Spiel akzeptabel wäre. Im Spiel wäre es dann bei 90% so, dass man eben ab und an mal mit dem Bogen abgerutscht ist oder zum falschen Zeitpunkt geatmet oder sonst wie gezittert hat.

    Das ganze so auszutarieren, dass die Trefferwahrscheinlichkeit überall (sowohl mit 10% als auch mit 90%) in etwa hinkommt, ist natürlich ein Gefummel, aber im Großen und Ganzen denke ich, dass es möglich sein sollte. Dabei sollte man, um dein Problem tatsächlich zu lösen, vermutlich dafür sorgen, dass die "groben Schnitzer" bei hohem Bogentalent tatsächlich für alle Fehlschüsse zuständig sind und sonstige Treffer sehr präzise sind. Bei geringem Bogentalent hingegen ist es eine Mischung aus beidem: öfter mal geht der Pfeil ganz daneben, ab auch die große Streuung sorgt für Fehlschüsse.

    So in etwa könnte ich mir das vorstellen

  17. Beiträge anzeigen #157 Zitieren
    Ritter Avatar von Tandrael
    Registriert seit
    Dec 2008
    Ort
    hinterm Mond gleich links
    Beiträge
    1.871
     
    Tandrael ist offline
    Wir haben uns gedanklich auch schon mit dem Thema beschäftigt, da uns das Freie Zielen auch etwas zu stark vorkam. Das eigentliche Balancing-Problem ist ja derzeit, dass man praktisch kein Bogentalent braucht.

    Wir haben uns daher entschieden, eher etwas an dem Balancing der Bögen zu drehen, um das Bogentalent trotzdem nützlich zu machen. Dafür planen wir, die Schadenswerte aller Bögen zu halbieren und den Prozentsatz des Bogentalentes als kritische Trefferwahrscheinlichkeit einzuführen. 10% Bogentalent bedeutet in diesem Fall eine 10%ige Wahrscheinlichkeit auf doppelten Schaden. Wenn man 100% Bogentalent hat, trifft man demzufolge immer mit doppeltem Schaden und hat so wieder normal starke Bögen. Das ganze gilt dann natürlich analog für Armbrüste.

    Das ist natürlich keine richtige Lösung für dein Problem, ich wollte nur mal aufzeigen, was wir derzeit geplant hatten. Sorry, dass ich dir nicht mit Mathe oder irgendwelchen anderen Ratschlägen zur Hilfe eilen kann.

  18. Beiträge anzeigen #158 Zitieren
    Ritter Avatar von aebo
    Registriert seit
    Oct 2008
    Beiträge
    1.278
     
    aebo ist offline
    Zitat Zitat von Tandrael Beitrag anzeigen
    Wir haben uns gedanklich auch schon mit dem Thema beschäftigt, da uns das Freie Zielen auch etwas zu stark vorkam. Das eigentliche Balancing-Problem ist ja derzeit, dass man praktisch kein Bogentalent braucht.

    Wir haben uns daher entschieden, eher etwas an dem Balancing der Bögen zu drehen, um das Bogentalent trotzdem nützlich zu machen. Dafür planen wir, die Schadenswerte aller Bögen zu halbieren und den Prozentsatz des Bogentalentes als kritische Trefferwahrscheinlichkeit einzuführen. 10% Bogentalent bedeutet in diesem Fall eine 10%ige Wahrscheinlichkeit auf doppelten Schaden. Wenn man 100% Bogentalent hat, trifft man demzufolge immer mit doppeltem Schaden und hat so wieder normal starke Bögen. Das ganze gilt dann natürlich analog für Armbrüste.

    Das ist natürlich keine richtige Lösung für dein Problem, ich wollte nur mal aufzeigen, was wir derzeit geplant hatten. Sorry, dass ich dir nicht mit Mathe oder irgendwelchen anderen Ratschlägen zur Hilfe eilen kann.
    Ich habe mich bewusst nun doch für "Freies Zielen" entschieden. Ich habe extra dafür eine neue Schadensberechnung eingefügt.
    Das Wappen
    -Eine fantastische Spielwelt erwartet dich-
    -bis zu 100 Stunden Spielzeit-

  19. Homepage besuchen Beiträge anzeigen #159 Zitieren
    Knight Commander Avatar von Kellendil
    Registriert seit
    Jul 2009
    Beiträge
    2.100
     
    Kellendil ist offline
    Die Lösung für das Problem ist es, den Abschuss-Winkel nicht aus einem gleichverteilten Intervall zufällig zu berechnen,
    sondern unterschiedliche Wahrscheinlichkeiten für unterschiedliche Winkel-Bereiche (Intervalle) zu nutzen.

    Ausgeblendete Probleme:
    - Unterschiedliche Ziele haben unterschiedlich große Bounding-Boxen
    - Die Crit-Bounding-Box befindet sich nicht exakt in der Mitte der Bounding-Box


    In Pseudo-Mathe:

    Spoiler:(zum lesen bitte Text markieren)
    Annahme: Der Spieler zielt entweder exakt in die Mitte der Bounding-Box, oder in die Mitte der Crit-Bounding-Box

    Abweich-Winkel eines ausgeführten Schusses ("Fehler"), den wir ausrechnen wollen:= r
    Maximaler Abweich-Winkel:= rmax
    Für Hit benötigter Winkel:= rhit (festgelegt durch Bounding-Box des Ziels, wenn Spieler in deren Mitte zielt)
    Für Crit benötigter Winkel:= rcrit (festgelegt durch Crit-Bounding-Box des Ziels, wenn Spieler in deren Mitte zielt)
    Es gilt: 0 < rcrit < rhit < rmax < 180

    Bogentalent:= skill (1 = 100%, frei wählbar, bestimmt, wie einfach es werden soll, einen Hitzu landen)

    Wahrscheinlichkeit, einen Hit zu landen:= phit
    Wahrscheinlichkeit, einen Crit zu landen:= pcrit
    Wahrscheinlichkeit, dass ein Hit ein Crit ist:= critchance (frei wählbar, bestimmt wie einfach es werden soll, einen Crit zu landen)

    Zufallsfunktion:= rand(r1, r2)
    Berechnet eine Zufallszahl zwischen r1 und r2 (gleichverteilt)


    Ziele (folgendes soll wahr sein):
    Spoiler:(zum lesen bitte Text markieren)
    phit = skill
    pcrit = phit * critchance


    Einfache Möglichkeiten, r zu berechnen, die aber alle nicht das Ziel erfüllen:
    Spoiler:(zum lesen bitte Text markieren)

    r = rand(0, rcrit) => garantierter crit
    => phit = 1, pcrit = 1

    r = rand(0, rhit) => garantierter hit
    => phit = 1, pcrit = (rcrit / rhit)

    r = rand(0, rmax)
    => phit = (rhit / rmax), pcrit = (rcrit / rmax)

    Offensichtlich sind alle diese Lösungen zu simpel und erfüllen nicht das Ziel (bzw. müsste man ständig die Bounding-Boxen an skill und critchance anpassen, damit die Ziele erfüllt werden).


    Korrekte Art, r zu berechnen (Aufteilen des Winkels r in mehrere Zonen):

    Spoiler:(zum lesen bitte Text markieren)
    rZoneCrit = rand(0, rcrit) => grantiertert crit
    rZoneHit = rand(rcrit, rhit) => garantiert hit, aber kein crit
    rZoneMiss = rand(rhit, rmax) => garantiert weder hit noch crit (= miss)

    Jetzt brauchen wir brauchen eine nicht-gleichverteilte Wahrscheinlichkeit, die wir uns leicht aus einer gleichverteilten basteln können, um daraus zu entscheiden, aus welcher Zone wir den zufälligen Winkel berechnen:

    zone = rand(0, 1)
    r = {
    rZoneCrit if 0 < zone < pcrit,
    rZoneHit if pcrit < zone < phit,
    rZoneMiss if phit < zone < 1
    }

    Jetz nur noch pcrit und phit ausrechnen (siehe Ziele) und fertig.


    Jetzt fliegen die Pfeile mit exakt der richtigen Wahrscheinlichkeit in die entsprechenden Winkel-bereiche.
    Auch schön ist, dass man rmax frei wählen kann. Solange rmax groß genug ist, dass man auch wirklich nicht trifft,
    wenn rZoneMiss berechnet wird, kann man fmax nach ästhetischen Gesichtspunkten auswählen.

    Edit:
    Zeug korrigiert.
    PS: Das nächste schwierige Problem ist dann, rhit und rcrit zu bestimmen. Letztendlich läuft es darauf hinaus, dass man große Dinge viel einfacher treffen können wird als kleine Dinge. Aber so funktioniert nunmal die Realität auch^^.

    Edit2:
    Mit der gleichen Methode kann man auch noch mehr Zonen hinzufügen, um z.B. zwischen knappen und starken Danebenschießen zu unterschieden (z.B. mit rZoneNearMiss und rZoneFarMiss), und kann die Wahrscheinlichkeiten dann auch wieder von skill abhängig machen, sodass man mit höherem Skill, wenn man nich trifft, wenigstens knapper daneben schießt.

    Wenn man das weiterdenkt, kommt man irgendwann zu dem Punkt, wo man unendlich viele Zonen mit unterschiedlichen Wahrscheinlichkeiten haben möchte (d.h. einfach, dass der Übergang zwischen den Wahrscheinlichkeiten fließend ist), und das ganze ohne den Bounding-Box Kram machen will. Dann definiert man einfach eine Umverteilungsfunktion:

    zone = rand(0, 1);
    r = zone^(1,5 - skill) * rmax

    =>
    - skill = 0 => exponentielle Verteilung, d.h. man es ist viel wahrscheinlicher dass man stark daneben schießt als dass man knapp daneben schießt/trifft.
    - skill = 0.5 => lineare Verteilung, also alle Winkel zwischen 0 und rmax sind gleich wahrscheinlich
    - skill = 1 => Wurzel-Verteilung bei , d.h. es ist viel wahrscheinlicher dass man genau trifft als ungenau/gar nicht

    Die Funktion kann man sich natürlich so zurechtbiegen, wie man das halt haben möchte.
    Geändert von Kellendil (24.06.2017 um 21:59 Uhr)

  20. Beiträge anzeigen #160 Zitieren
    Ritter Avatar von aebo
    Registriert seit
    Oct 2008
    Beiträge
    1.278
     
    aebo ist offline
    Hi,

    habe mal ne Frage zu deinem Script. In dem video auf Youtube ist der Stand des Helden beim Abschuss der Pfeile ja immer wie der, des Anfängers. Gleichzeitig muss man einen Augenblick den Bogen gespannt lassen, damit der Cursor "enger" wird und die Treffergenauigkeit erhöht ist.

    Ist es möglich das bei anderem Overlay (z.b. Meister) die Geschwindigkeit des verkleinern des Cursor beschleunigt wird? Also man schneller Pfeile mit höherer Genauigkeit schießen kann?

    Dann würde ich das Script nämlich gerne nutzen wollen. Habe mir auch eine neue Schadensberechnung erstellt. Damit würde dieses Script sehr viel sinn machen.

    beste Grüße

    EDIT:
    Nochmal in Kurz:
    Untrainierter Schütze = längere Phase in der der Cursor enger wird.
    besser trainierter Schütze = kürzere Phase in der der Cursor enger wird.
    Das Wappen
    -Eine fantastische Spielwelt erwartet dich-
    -bis zu 100 Stunden Spielzeit-

Seite 8 von 15 « Erste ... 456789101112 ... Letzte »

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
Impressum | Link Us | intern
World of Gothic © by World of Gothic Team
Gothic, Gothic 2 & Gothic 3 are © by Piranha Bytes & Egmont Interactive & JoWooD Productions AG, all rights reserved worldwide