Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Wirago

Alter Hase

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

81

01.10.2018, 14:46

Einen Design-Award bekommt die Karre nicht, das stimmt :D
Aber trotzdem cool wenn du die GTA-Typische Funktionalität hinbekommen hast.

82

01.10.2018, 15:30

Ist halt 'n Kastenwagen.
Das suggeriert doch per se schon Ecken und Kanten... :S
fka tm

Martin Mundorf

Treue Seele

  • »Martin Mundorf« ist der Autor dieses Themas

Beiträge: 262

Wohnort: Waldorf, Kr. Ahrweiler

Beruf: Althistoriker

  • Private Nachricht senden

83

01.10.2018, 20:59

...die Autos...

Es freut mich, wenn euch mein Vehikel "gefällt" ;)


...jedenfalls: kann man nun seit heute auch:

-Teammitglieder im Auto mitnehmen (abhängig davon, wieviel Sitzplätze das Fahrzeug hat), und sie spawnen um den Player herum, wenn dieser wieder aussteigt.

Und hier hab ich mal ne Frage zum programmieren. Dieses "Teammitglieder mitnehmen", hab ich wie folgt gelöst.
Und jetzt mal ne ganz doofe Frage: ich hab nie programmieren gelernt, aber ich hab das Gefühl, ich schreibe viel Spaghetti-Code.
Kann man an unten stehendem Beispiel etwas performanter/eleganter/kürzer schreiben?
(in den englischsprachigen tutorials auf YouTube heißts immer "slick" "neat" usw.)

Der Code funzt zwar, aber..hmmm... so for-Schleifen, if-Abfragen etc. kann man doch hin und wieder durch so Hieroglyphen wie "?:" komplett abkürzen? :hmm:

(Wie gesagt, das ist nur ein Beispiel, ich möcht ja noch was lernen :) )

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
   void team_embark_IN(Squad_Manager sqm, VehikelIdentyfier vI)
    {
        //maximale fahrgastzahl beachten! TODO

        if (sqm.TeamMitglieder.Count == 0 )//|| vI.maxPersonen ==1)
            return;

        if (vI.maxPersonen == 1)
        {

            txt_2.GetComponent<InfotextScript>().DisplayInfo("nur für eine Person!", 2.5f);

            foreach (GameObject g in sqm.TeamMitglieder) // läßt die Teammitglieder stehen
            {
                g.GetComponent<AI>().SetStandBy();
                g.GetComponent<AI>().GotOrderToPatrol = false;
                Radar.RemoveRadarObjekt(g);
                Radar.RegisterRadarObjekte(g, radar.Radarmarker[1]);
            }
            // wenn sie dem 1-Mann Vehikel folgen sollen, dann muß hier noch was hin.

            return;
        }

        if (vI.maxPersonen-1 >= sqm.TeamMitglieder.Count) // alle haben Platz
        {
            foreach (GameObject g in sqm.TeamMitglieder)
            {
                vI.Insasse.Add(g.GetComponent<CharacterStats>());
                Radar.RemoveRadarObjekt(g);
                g.SetActive(false);
            }
            return;
        }
        else if (vI.maxPersonen-1 < sqm.TeamMitglieder.Count)
        {
           // Debug.Log("es haben nicht alle in diesem Fahrzeug Platz!");
            txt_2.GetComponent<InfotextScript>().DisplayInfo("es haben nicht alle in diesem Fahrzeug Platz!", 2.5f);

            for (int i = vI.Insasse.Count; i < vI.maxPersonen;i++)
            {
                vI.Insasse.Add(sqm.TeamMitglieder[i].GetComponent<CharacterStats>());
                Radar.RemoveRadarObjekt(sqm.TeamMitglieder[i]);
                sqm.TeamMitglieder[i].SetActive(false);
            }

            foreach (GameObject g in sqm.TeamMitglieder)
            {
                if (!vI.Insasse.Contains(g.GetComponent<CharacterStats>()))
                {
                    g.GetComponent<AI>().SetStandBy();
                    g.GetComponent<AI>().GotOrderToPatrol = false;
                    Radar.RemoveRadarObjekt(g);
                    Radar.RegisterRadarObjekte(g, radar.Radarmarker[1]);
                }
            }
            return;
        }
    }

    void team_embark_OUT(VehikelIdentyfier vI, Squad_Manager sqm)
    {
        if (vI.Insasse.Count == 0) //wenn also außer dem Fahrer niemand an Bord war
            return;

        sqm.memberPositionieren(sqm.TeamMitglieder.Count);

        for (int i = 0; i < sqm.TeamMitglieder.Count; i++)
        {
            sqm.TeamMitglieder[i].gameObject.transform.position = sqm.memberPos[i];
        }
        foreach (GameObject g in sqm.TeamMitglieder)
        {
            g.SetActive(true);
            Radar.RegisterRadarObjekte(g, radar.Radarmarker[2]);
        }

        vI.Insasse.Clear();

    }
"Eine Signatur ist das Buchstaben-Zahlen-Zettelchen unten an ein einem Buch in der Bibliothek!"



was ich zur Zeit ausprobiere: 3rd person Shooter <- hierfür suche ich noch Unterstützung.


"Lehrjahre": Im Lande der Hasen
mein ewiges Spielprojekt "Straights & Rows".
meine Grafiken "ohne Verwendungszweck"

Tris

Treue Seele

Beiträge: 102

Wohnort: ~Stuttgart

  • Private Nachricht senden

84

01.10.2018, 23:38

Es freut mich, wenn euch mein Vehikel "gefällt" ;)


...jedenfalls: kann man nun seit heute auch:

-Teammitglieder im Auto mitnehmen (abhängig davon, wieviel Sitzplätze das Fahrzeug hat), und sie spawnen um den Player herum, wenn dieser wieder aussteigt.

Und hier hab ich mal ne Frage zum programmieren. Dieses "Teammitglieder mitnehmen", hab ich wie folgt gelöst.
Und jetzt mal ne ganz doofe Frage: ich hab nie programmieren gelernt, aber ich hab das Gefühl, ich schreibe viel Spaghetti-Code.
Kann man an unten stehendem Beispiel etwas performanter/eleganter/kürzer schreiben?
(in den englischsprachigen tutorials auf YouTube heißts immer "slick" "neat" usw.)

Der Code funzt zwar, aber..hmmm... so for-Schleifen, if-Abfragen etc. kann man doch hin und wieder durch so Hieroglyphen wie "?:" komplett abkürzen? :hmm:

(Wie gesagt, das ist nur ein Beispiel, ich möcht ja noch was lernen :) )

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    void team_embark_OUT(VehikelIdentyfier vI, Squad_Manager sqm)
    {
        if (vI.Insasse.Count == 0) //wenn also außer dem Fahrer niemand an Bord war
            return;

        sqm.memberPositionieren(sqm.TeamMitglieder.Count);

        for (int i = 0; i < sqm.TeamMitglieder.Count; i++)
        {
            sqm.TeamMitglieder[i].gameObject.transform.position = sqm.memberPos[i];
        }
        foreach (GameObject g in sqm.TeamMitglieder)
        {
            g.SetActive(true);
            Radar.RegisterRadarObjekte(g, radar.Radarmarker[2]);
        }

        vI.Insasse.Clear();

    }






Ich hab nur die letzte Funktion gesehen angeguckt und dachte mir die 2 Schleifen kann man auch in einer abwickeln:

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void team_embark_OUT(VehikelIdentyfier vI, Squad_Manager sqm)
    {
        if (vI.Insasse.Count == 0) //wenn also außer dem Fahrer niemand an Bord war
            return;

        sqm.memberPositionieren(sqm.TeamMitglieder.Count);

        for (int i = 0; i < sqm.TeamMitglieder.Count; i++)
        {
            GameObject mitglied = sqm.TeamMitglieder[i].gameObject;
            mitglied.transform.position = sqm.memberPos[i];
            mitglied.SetActive(true);
            Radar.RegisterRadarObjekte(mitglied, radar.Radarmarker[2]);
        }
        vI.Insasse.Clear();
    }


Ist nur ein Vorschlag, hab auch keine Ahnung ob das so funktioniert, da nicht getestet. Bin mir nicht sicher was der Squad_Manager ist.

Bei mehreren GetComponent Aufrufen mache ich das gerne wie folgt:

C#-Quelltext

1
2
3
4
5
6
7
8
// Anstatt:
 g.GetComponent<AI>().SetStandBy();
 g.GetComponent<AI>().GotOrderToPatrol = false;

// So:
AI ai = g.GetComponent<AI>();
ai.SetStandBy();
ai.GotOtderToPatrol = false;


Häufige GetComponent Aufrufe zehren wohl an der Performance, aber in deinem Fall ist das ja nicht in der Update Methode drin und ist wohl eher Geschmackssache.
Bei mehr als 1 Aufruf speichere ich mir das Object, evtl. kommen später ja noch weitere Aufrufe hinzu.

Das Auto ist übrigens der Hammer! :thumbup:

Wie immer gilt: Wenn ich Mist erzähle, bitte korrigiert mich. Ich bin auch noch nicht so tief in Unity drin.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

85

02.10.2018, 08:34

@Martin: Was mich an deinem Code immer noch am meisten stört ist die Inkonsistenz. Mal deutsch, mal englisch, mal mit Wörter mit Unterstrichen getrennt, mal alles in Großbuchstaben, ...

Martin Mundorf

Treue Seele

  • »Martin Mundorf« ist der Autor dieses Themas

Beiträge: 262

Wohnort: Waldorf, Kr. Ahrweiler

Beruf: Althistoriker

  • Private Nachricht senden

86

02.10.2018, 20:45

Also die Auskommentierungen mach ich ja für mich selbst als Erinnerungsstütze, da spar ich mir die strikte Sprache.
Und ja, das geht bei mir noch kreuz und quer, aber ich bemühe mich schon darum, das es einheitlich wird.
(Kommt wahrscheinlich mit der Routine...)
Wenns dann mal etwas komplizierter wird, und ich aus Verzweiflung nen hilfs-bool oder ein hilfs-Skript einbauen muß, dann neige ich eher dazu, direkt was deutsches zu nehmen. Aber ich bemühe mich schon um verständliches Skript, d.h. ich stelle mich langsam auf englisch um.

(Im binären Sinne ists ja wurscht, ob der Computer "car" mit "car" oder "Auto" mit "Auto" vergleichen soll - aber für uns Menschen leuchtet mir das schon ein, das es verwirrend ist, wenn health=0 im einen Skript "destroyed true" oder "kapott* true" wiedergibt.

*kein Tippfehler. Manchmal mischt sich auch rheinischer Dialekt in den Code :whistling: :rolleyes:
"Eine Signatur ist das Buchstaben-Zahlen-Zettelchen unten an ein einem Buch in der Bibliothek!"



was ich zur Zeit ausprobiere: 3rd person Shooter <- hierfür suche ich noch Unterstützung.


"Lehrjahre": Im Lande der Hasen
mein ewiges Spielprojekt "Straights & Rows".
meine Grafiken "ohne Verwendungszweck"

Martin Mundorf

Treue Seele

  • »Martin Mundorf« ist der Autor dieses Themas

Beiträge: 262

Wohnort: Waldorf, Kr. Ahrweiler

Beruf: Althistoriker

  • Private Nachricht senden

87

07.10.2018, 19:58

Entwicklungslogbuch, Sternzeit 071018

Hallo zusammen...

auch wenn ich mir vllt etwas mehr feedback gewünscht hätte (auch zur Demo-Version; derzeitiger return == null), bin fleißig am basteln:

neben Straßenschildern und neuen Explosionen (Update auf Unity 2018 inkl. Partikel-Packs, das mich eine Menge Nerven gekostet hat :rolleyes: ,meine schönen Explosionen gingen nicht mehr, und ich muß Ersatz basteln )

- schnöde aber wichtig: am Anfang einer Mission/Levels wird ein Info-text eingeblendet, der auf Missionsziele hinweist

- Ich hab wieder ein neues "Gimmick" ersonnen: da ich von manchen KI-Figuren zwei oder drei Varianten habe (unterschiedliche Kleidung), ist es mir anhand eines Protoyps gelungen, eine KI durch eine "Umkleidekabine" laufen zu lassen, so daß sie das Aussehen ändert.
zB. vom Kampfanzug in den Bikini oder umgekehrt ^^

-außerdem gibt es ein neues Fahrzeug, einen LKW (der dann ggf verschiedene Fracht geladen haben kann). Denkbar wären Quests wie "bringe die Fracht von A nach B (ggf in einer vorgeschriebenen Zeit)).


kleine Anmerkung: ich hab zwar "Geschichten" im Kopf, aber die sind so (und für einen allein) nicht umsetzbar. Und obwo ich in dem Thread ("was soll ein Charakter können?" ermahnt worden bin, nicht immer neue Gimmicks und Gadgets zu entwickeln: genau das macheich gerade, und genau das macht mir gerade Spaß. Ich nehme den Hinweis sehr ernst, mich an die Hauptlinie zu halten - aber ich bekomms grad einfach nicht hin. Ws mir fehlt, ist ein "Drehbuchschreiber" (aka Ideengeber), der sich eine halbe Stunde in meine Figurenwelt vertieft und mir Ideen gibt, in deren Richtung ich dann weiter basteln kann.

Oder kurz ausgedrückt: Ich brauch Story-Input. Ich steh da mit meinem Malkasten an Möglichkeiten, und weiß nicht, was ich malen soll.
(und unterdessen machts einfach Spaß, neue Farben zu mischen, so to speak.


und als Nachbrenner: das mit dem konequenten Englisch... ja, ich tu mich schwer (siehe letzten Post) - aber bei meinem "bodychanger" Skript hab mich versucht, mich dran zu halten.
(die deutschen bezeichnunge stammen aus den alten Skripten) - aber so bzw. so ähnlich versuche ich das in Zukunft fortzuführen :)

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
void Start()
    {
        cM = GetComponent<CharacterMovement>();
        itM = GetComponent<ItemManager>();
        wH = GetComponent<WeaponHandler>();

        n_AV = GetComponent<Animator>().avatar;


        if (Body_second != null)
        {
            s_AV = Body_second.GetComponent<Animator>().avatar;
            Body_second.SetActive(false);
        }
    }

    void detach_wH(Transform lHand, Transform rHand, Transform Spine)
    {
        wH.userSettings.leftHand = lHand;
        wH.userSettings.rightHand = rHand;
        wH.userSettings.pistolUnequipSpot = Spine;
        wH.userSettings.rifleUnequipSpot = Spine;
        wH.userSettings.leftHandIKTarget = lHand;
        wH.userSettings.spine = Spine;

        wH.currentWeapon.transform.SetParent(rHand);
    }

    void detach_cM(Transform Head)
    {
        cM.other_Setup.Kopf = Head;
    }

    void detach_itM(Transform r_Hand, Transform l_Hand, Transform Head, Transform Spine, Transform r_leg, Transform l_leg)
    {
        itM.userSettings.Kopf = Head;
        itM.userSettings.rechte_Hand = r_Hand;
        itM.userSettings.linke_Hand = l_Hand;
        itM.userSettings.Spine = Spine;
        itM.userSettings.USL = l_leg;
        itM.userSettings.USR = r_leg;

    }

   public  void _change_body(int i)
    {
        if (Body_second == null)
            return;

        if (i == 1 && _current_body ==0)
        {
            Body_normal.SetActive(false);
            Body_second.SetActive(true);

            if (Body_second.GetComponent<Animator>())
            {
                Destroy(Body_second.GetComponent<Animator>());
            }

            GetComponent<Animator>().avatar = s_AV;
            detach_wH(s_left_Hand, s_right_Hand, s_Spine);
            detach_itM(s_right_Hand, s_left_Hand, s_Head, s_Spine, s_r_leg, s_l_leg);
            detach_cM(s_Head);
            _current_body = 1;
        }
        else if (i == 0 && _current_body==1)
        {

            GetComponent<Animator>().avatar = n_AV;

            Body_normal.SetActive(true);
            Body_second.SetActive(false);
            detach_wH(n_left_Hand, n_right_Hand, n_Spine);
            detach_itM(n_right_Hand, n_left_Hand, n_Head, n_Spine, n_r_leg, n_l_leg);
            detach_cM(n_Head);
            _current_body = 0;
        }
     

    }
"Eine Signatur ist das Buchstaben-Zahlen-Zettelchen unten an ein einem Buch in der Bibliothek!"



was ich zur Zeit ausprobiere: 3rd person Shooter <- hierfür suche ich noch Unterstützung.


"Lehrjahre": Im Lande der Hasen
mein ewiges Spielprojekt "Straights & Rows".
meine Grafiken "ohne Verwendungszweck"

Martin Mundorf

Treue Seele

  • »Martin Mundorf« ist der Autor dieses Themas

Beiträge: 262

Wohnort: Waldorf, Kr. Ahrweiler

Beruf: Althistoriker

  • Private Nachricht senden

88

13.10.2018, 01:31

Entwicklungslogbuch, Sternzeit 131018 / "Small Theft Auto"

Hallo zusammen :D

eigentlich wollt ich nix mehr posten, bevor die nächste demo-Version fertig ist...
...aber: mein Spiel entwickelt sich zur Zeit (auch) in eine Richtung "Small Theft Auto" ^^

d.h.:

- es gibt verschiedene Fahrzeuge, die man benutzen kann (PKW und LKW)*
- endlich (!) gibt es wieder ein dynamisches Fadenkreuz, das auf die Entfernung reagiert (Größe abhängig von der Entfernung)
- unbewaffnete neutrale Personen ducken sich (aus Angst) wenn man sie mit einer Waffe anvisiert
- ein neues Artilleriegeschütz, das benutzt werden kann (Reichweite mit dem Mouse-Rad veränderbar) (das war übrigens einiges an Arbeit!)
- wenn man in ein Fahrzeug einsteigt, wird einem der Fahrzeugtyp (Name) angezeigt.
- der Straßenverkehr wird lebhafter (durch mehr KI Autos)
- die Steuerung des jeweiligen Player-Autos ist verbessert
- man kann "Überraschungspakete" finden (Kisten), die, wenn man sie zerstört, neue items spawnen


zur Zeit in der Entwicklung: die Möglichkeit "Addons" für Fahrzeuge zu kaufen/entdecken/finden, und diese ggf. dann einzubauen
(noch nicht ganz die crafting-Idee umgesetzt, aber immerhin...)
(so zB. einen Flammenwerfer für die Tankette, zusätzlich zu dem Standard-Geschütz).

als Idee im Hinterkopf: man muß hin und wieder an eine Tankstelle fahren, damit das Fahrzeug fahren kann
in Planung: einen Tacho in der UI einbauen, damit man sieht, wie schnell man unterwegs ist.
* LKW-Idee: eigene Funktion für die "Ladefläche", damit man auch größere Objekte von A nach B bringen kann.

Was Fahrzeuge und Gebäude betrifft, so habe ich den unity-Asset-Store abgegrast, wo es nur ging,und auch in "low-poly"-Assets wertvolle Anreize und Ideen gefunden, wie ich verschiedene Dinge umsetze. Dennoch bleibt mir bei vielen Dingen nur der Eigenbau...

Was zum Beipsiel aktuell als Level-Mission möglich wäre:
"Finde in der Stadt die drei LKW mit den Geheimwaffen, und bringe sie zum Schrottplatz."
»Martin Mundorf« hat folgendes Bild angehängt:
  • zw_sp_b.png
"Eine Signatur ist das Buchstaben-Zahlen-Zettelchen unten an ein einem Buch in der Bibliothek!"



was ich zur Zeit ausprobiere: 3rd person Shooter <- hierfür suche ich noch Unterstützung.


"Lehrjahre": Im Lande der Hasen
mein ewiges Spielprojekt "Straights & Rows".
meine Grafiken "ohne Verwendungszweck"

Martin Mundorf

Treue Seele

  • »Martin Mundorf« ist der Autor dieses Themas

Beiträge: 262

Wohnort: Waldorf, Kr. Ahrweiler

Beruf: Althistoriker

  • Private Nachricht senden

89

24.10.2018, 14:28

Entwicklungslogbuch, Sternzeit 131018 "Girls of Glory - Small Theft Auto"

Hallo zusammen :)

Ich hoffe sehr, das wenigstes 1-2 Leute m,al Interesse haben, das auch zu spielen...

...jedenfalls: wenn man Verbündete mit einer Waffe anvisiert, alssen sie nun einen random-Spruch los, und ansonsten habe ich einige Fahrzeuge gefunden, die ich einbauen konnte (und auch selbst gebaut, aber nicht den LKW)...und eine Amazonen-Drohnen-Armee erschaffen /o\

...ansonsten ist die Funktionalität wie bei GTA (es soll aber kein reiner Clon davon sein!) ...und es gibt an vielen Ecken bunte Plakate und Spaß-Bonus-Items zu entdecken :)

und man kann "ewig" mit den verschiedenen Fahrzeugen durch die Landschaft/Straßen fahren (und gegnerische KI überfahren - da gibts Geld für)
»Martin Mundorf« hat folgende Bilder angehängt:
  • a1_1.png
  • a2_2.png
  • a3_3.png
"Eine Signatur ist das Buchstaben-Zahlen-Zettelchen unten an ein einem Buch in der Bibliothek!"



was ich zur Zeit ausprobiere: 3rd person Shooter <- hierfür suche ich noch Unterstützung.


"Lehrjahre": Im Lande der Hasen
mein ewiges Spielprojekt "Straights & Rows".
meine Grafiken "ohne Verwendungszweck"

Sunroc

Treue Seele

Beiträge: 272

Wohnort: SH

  • Private Nachricht senden

90

24.10.2018, 14:41

Ich hoffe sehr, das wenigstes 1-2 Leute m,al Interesse haben, das auch zu spielen...

Kenn ich...


Nun zu deinem Spiel: Ich habe nach 1 Minute aufgehört, nach einem Downloadlink zu suchen. Poste mal einen Link, am besten auch im Eingangsposting. Falls ich ihn übersehen habe, solltest du die Sichtbarkeit/Präsentation überarbeiten.

Also, ich bin bereit in dein Spiel zu sehen und werde ehrliche Rückmeldungen geben.
Mein erstes Projekt: "Canyonbreed" - Ein Sci-Fi Abenteuer
Mein zweites Projekt: Ronith 4: Isolation - Ein Sci-Fi Onlineshooter

Werbeanzeige