Beiträge von Nobody

    Ich hab mal mit Nobody darüber geredet, der hatte es genau so gemacht, keine Ahnung wieso es bei ihm klappte und bei mir nicht, vielleicht weil er 3 Jahre früher dran war und seins nicht so beschissen aussieht wie meins^^

    Dazu sei gesagt das alle "Werbung" die ich getätigt hatte nicht wirklich zum Erfolg beigetragen hat. Der Erfolg war eher das größere Youtuber schon vor Release vom Spiel erfahren hatten (durch Steam Greenlight) und deswegen die Ausgangs Mund zu Mund Propaganda viel größer starten konnte.

    Alle Keys die ich später eigenständig verschickt hatte waren im Endeffekt mehr oder weniger Sinnlos im vergleich zu den Youtubern und Streamern die es sich dann selbst gekauft hatten und von sich aus Interesse gezeigt hatten oder welche die dann Ihrerseits Keys angefragt hatten war eher der Grund für einen Erfolg.

    Ich würde auch sagen das der Großteil des Erfolgs aus der initialen Werbung der Youtuber und Streamer zustande kam und der Rest durch Mund zu Mund Propaganda weitergeführt wurde nach dem initialen Release und dann gab es noch einen gigantischen Sprung im September 2017 wo Valve nachgefragt hatte ob wir Interesse an einem Weekend Sale hätten. Das hat die Reichweite und Verkäufe nochmal unglaublich in die Höhe geschossen mit erheblichen Langzeit folgen der daraus entstanden Mund zu Mund Propaganda. Natürlich muss im Endeffekt das Spiel auch stimmen.


    Ich kann natürlich auch immer nur aus meiner persönlichen einseitigen Erfahrung reden aber denke das ein eigenes Interesse von Influencern schon einen enormen Vorteil bietet. Ich weiß aber auch von anderen Entwicklern, dass Videos von größeren Youtube Kanälen nicht automatisch ein Erfolg bedeutet. Es sind also mehrere Faktoren zu betrachten abseits von Werbung.

    Im Buch beschreibst du es so:

    ''Sie beginnt mit einem Event BeginPlay, an das sich eine ForEach-Node anschließt: angefangen bei Element 0 bis hin zur Länge des Arrays minus eins. Würden wir nur die reine Länge des Arrays benutzten, würde ForEach einmal, zu viel ausgeführt werden.''


    Ich verstehe nicht ganz wie dieses einmal zu viel zustande kommt. Heißt das die ForEach-Node würde bei jeder Array die man so anbindet immer so bald sie an ihre End Position kommt (in unserem bsp Postion 4) einfach noch eine Imaginäre 5te Position hinzufügen, würde man das ganze nicht mit -1 unterbinden?

    Okay, sorry da ist jedenfalls schon mal ein Fehler in dem Zitat, da die erste Node eine ForLoop-Node und nicht eine ForEach Node ist. Da muss wohl etwas beim korrigieren oder Indexierung schief gelaufen sein.

    Aber ich hoffe du hast dennoch verstanden das es am Anfang um die ForLoop-Node geht und nicht um die ForEach.


    Ich hoffe es hilft dir auch wiederum hier dir das Bildlich zu verdeutlichen.



    Wenn wir die ForLoop so benutzen würden um als ersten Index 0 und als letzten Index die länge des Arrays, so würde der Loop Body 6 mal ausgeführt werden. Wenn wir anschließend den Index innerhalb des Loop Body benutzen würden so würde dies 5 mal gut gehen, aber beim letzten Durchgang einen Error abgeben.


    0 - Kein Problem

    1 - Kein Problem

    2 - Kein Problem

    3 - Kein Problem

    4 - Kein Problem

    5 - Error



    Um dies zu umgehen aber den Index ohne weiteres benutzen zu können rechnen wir die Länge - 1 damit der Index immer als "Last Index" den letzten Index hat.


    Alternativ kann man natürlich auf den First Index und Last Index von 1 bis länge des Arrays gehen lassen. Dann muss man aber um Errors zu vermeiden den LoopBody Index -1 rechnen.



    Bei einer ForEach-Loop im zweiten Teil des Beispiels kann sowas nicht passieren, da man keine manuelle angaben macht und das Array als solches verwendet. Dann gibts auch keine Errors.



    Ich muss hier nochmal nachfragen da das Wort Index ziemlich oft gefallen ist. Mir ist bewusst das First Index & Last Index die jeweils Erste bzw Letzte Position eines Arrays darstellt (In unserem Fall Postion 0 & 4). Im letzten abschnitt benutzt du allerdings nur das Wort Index, wenn du da von Index redest sprichst du da Explizit denn First- bzw Last- Index an?

    Genau da meinte ich explizit den First Index und Last Index aus der Node und nicht den eigentlichen Index. Diese ganzen Begriffe können schnell verwirrend wirken, sorry. ?(


    Hier auch nochmal, wenn du Index sagst meinst du damit First- bzw Last- Index oder meinst du damit alle Postion innerhalb der beiden und warum ist es Irrelevant für den Loop Body? (Weil eh alle Index durch gegangen werden?)


    Eine weitere Frage dies bezüglich, warum genau hast du das Array die Länge minus 1 an Last Index angeschlossen statt an Frist Index,


    Also der Index ist dann vor allem wichtig wenn du in auch verwendest z.b. in einer Get-Node.



    Hier nochmal das Bild von eben. Wenn wir aktiv den Index des Loop Bodys verwenden ist der Richtige Index es wichtiger Bestandteil des ganzen und kann dann wie auf den Bild zu einem Error führen wenn der jeweilige Index im Array nicht existiert.


    Der ForLoop addiert nur pro Durchgang eine lokale variable und subtahiert nicht. D.h. es kann nur in eine Richtung funktionieren sonst wird gar nichts ausgegeben.


    So schaut die ForLoop intern aus:




    um sagen wir mal 3 Postionen von unserem bsp ausgeben zu lassen müsste ich bei Frist Index bei ForLoop von einer 0 zu einer 4 umschreiben?

    Nein, gehen wir mal davon aus du bist das komplette Array durchgegangen und hast es sortiert. Anschließend willst du die Top 3 Ergebnisse ausgeben lassen. Dann kannst du das einfach so machen:



    Der Loop Body wird 3 mal ausgeführt und um der "Get"-Node bekommst du die Top 1, Top 2 und Top 3 Ergebnisse aus Index 0, Index 1 und Index 2.

    Das ist mir durch aus bewusst, aber bevor ich mit den Bausteinen Experimentieren kann, muss ich sie in ihrer Funktionalität verstehen. ^ ^

    Wie gesagt, ich habe 0 Programmier Kenntnis und jemand der etwa C++ oder andere Programmier Sprachen schon beherrscht dürfte diese Aufgabe wesentlich eindeutiger gegenüber stehen als ich. ^^


    Oh man das war jetzt echt viel, sry sollte ich es nicht so einfach rallen, ich gebe mein bestes alles so gut es geht in meinen Schädel zu drücken und zu verstehen. Danke auf jeden fall für die mühe es mir zu erklären. :saint:

    Kein Problem, für mich waren Arrays anfangs auch sehr kompliziert und ich habe oft Fehler mit falschen Indexen gehabt. Kann das also alles gut Nachvollziehen. :)

    Sorry falls ich nicht ganz in der Lage bin das vernünftig zu erklären aber ich hoffe dir jetzt nochmal ein bisschen näher gebracht zu haben wie das alles so funktioniert, wenn nicht kann ichs gern weiter versuchen. :D


    Vom Prinzip kannst du dir Denken (Ich will Position 4 haben. Also 4 - 1 = Index 3. Ich brauche Index 3)

    Aber wie gesagt falls noch weitere Fragen bestehen oder es immer noch unklar ist helfe ich gerne weiter. :)

    Hallöchen, gerne versuche ich dir deine Fragen zu beantworten. :)


    1. Ein Array ist nichts anderes als eine Auflistung an werten/Inhalten. Um auf diese Liste zuzugreifen wird der sogenannte Index verwendet der bei einem Array bei 0 beginnt. Willst du dementsprechend den ersten Eintrag in dem Array haben musst du den Index 0 nehmen. Willst du den 5ten Eintrag in dem Array haben musst du den Index 4 nehmen. Immer "N-1".

    Wenn du einen ForLoop verwendest geht dieser vom "First Index" zum "Last Index". Enthält das Array 5 Einträge und du willst dieses Array mit der ForLoop komplett durchgehen musst du also bei 0 Anfangen und bei länge-1 aufhören. In dem Beispiel dort ist der Index eher un-relevant da du innerhalb des "Loop Body" nicht den "Index" benutzt.

    In dem Beispiel hätte (da der "Index" nicht verwendet wird) auch von "First Index": 1 zu "Last Index": länge des Arrays nehmen können.

    Problematisch ist es in diesem Beispiel nur wenn du von dem ausgehenden Index ein get machen würdest und dann das Risiko bestehen würde ein "Get Index 5" zu haben obwohl Index 5 bei 5 Einträgen nicht existieren würde und der letzte Index auf 4 liegt. (Sprich Länge minus eins) Das kommt dann zu Fehler-Nachrichten.


    2. Der Unterschied zwischen den beiden Nodes ist das die "ForEachLoop" alle Einträge durchgeht und du die ArrayElement sowie ArrayIndex im LoopBody zur Verfügung hast. Aber es wird immer das komplette Array durchgegangen egal wieviele Einträge dort vorhanden sind. Willst du also nur einen gewissen Teil des Arrays durchgehen kannst du dies mit einem ForLoop regeln um dann Beispielsweise nur die ersten 10 Einträge auszulesen und dann der Rest des Arrays nicht unnötigerweise überprüft wird.

    Es geht bei diesen Aufgaben vor allem darum zu überprüfen und eventuell zu experimentieren was die einzelnen Nodes machen und man sich Gedanken machen kann wie man diese anderweitig verwenden könnte.

    Es gibt einige bessere und schönere Lösungen, aber hier geht es eher ums Lernen und experimentieren von Nodes. :) (Zumindest war dies meine Intention)


    3. Stelle dir den Vorgang am besten Bildlich vor. Das Array fängt wie folgt an


    Highscore:

    0 = 123

    1 = 52

    2 = 6

    3 = 97

    4 = 532


    Sorted:


    Sorted ist leer und Highscore ist unsortiert befüllt. Beim ersten durchgang wird nach dem größten Wert im Highscore Array gesucht welcher am Index 4 zu finden ist. Diesen fügen wir in der Sorted Variable mit dem Add hinzu.


    Sorted:

    0 = 532


    Den Highscore Array ändern wir mit "SetArrayElem" am den Index des höchsten Wertes. Nach diesem Vorgang sieht das Highscore Array wie folgt aus:


    Highscore:

    0 = 123

    1 = 52

    2 = 6

    3 = 97

    4 = -1


    Sorted:

    0 = 532


    Beim zweiten Durchgang ändert sich alles auf folgendes:


    Highscore:

    0 = -1

    1 = 52

    2 = 6

    3 = 97

    4 = -1


    Sorted:

    0 = 532

    1 = 123


    Es wurde wieder auf das Highscore-Array zugegriffen welches die Änderung von eben mit einbezogen hat. Da wir nach dem höchsten Wert im Array suchen und den vorherigen höchsten Wert auf -1 gesetzt haben wird dieser bei einem einmaligen kompletten Durchgang nicht nochmal als MaxValue bekommen. am Ende sieht es dann so aus:


    Highscore:

    0 = -1

    1 = -1

    2 = -1

    3 = -1

    4 = -1


    Sorted:

    0 = 532

    1 = 123

    2 = 97

    3 = 52

    4 = 6


    Ich hoffe das hilft dir bei deinen fragen. :)

    Array können am Anfang ein bisschen verwirrend sein mit dem Konzept von "Indexen" anstelle von "normalen" Aufzählungen die man aus dem Alltag gewohnt ist.


    Viele Grüße,


    Jonas

    Jahrelange CS Erfahrung :D


    Macht auf jeden fall ne menge Spaß und bin sehr gespannt wie sich das Projekt noch weiterentwickeln wird. :)
    Hier und da noch ein paar bugs fixen und neue Features reinhauen und dann hat man einen echt richtig soliden fun shooter den man mit nen paar Kumpels zocken kann, sehr cool!

    Es gab früher in den ersten Versionen LOD nach distanz, aber die haben das irgendwann mal umgeändert zu Screen-Size anstelle von Distanz, fand ich auch eher blöd.
    Weiß nicht ob der Engine-Code dabei groß geändert wurde, aber vllt könnte man in den alten Source-Code schauen und in der neuen Engine mithilfe des alten codes ein Distanz basiertes System wieder einzubauen. Aber je-nachdem was verändert wurde kann es doch ein großer Aufwand sein.

    Huhu,


    Die LOD-Werte beziehen sich auf % werte von der Darstellung auf dem Bildschirm.


    So kommt es auch das bei größeren Objekten z.b. ein Haus 0.5 erst bei einer deutlich größeren Entfernung eintrifft als ein Eimer oder kleine pflanze.
    Es gibt deswegen keine wirklichen ideal-werte und sind alle Objekt/Spiel abhängig.

    Ich denke das Problem liegt daran, dass du keinen default-Value eingegeben hast bei Key-Actor. Wenn du deine Tür in der Welt platzierst musst du in der scene die Tür ausgewählt haben und dann rechts im Detail-Bereich der Tür den richtigen Key-Actor auswählen.
    Wenn du keinen Key-Actor ausgewählt hast wird sich die Tür auch nicht öffnen können da "Locked" immer default true ist, auch dies musst du im Details-Bereich beim ausgewählten Objekt verändern.

    Als Alternative kannst du auch einfach mehrere Integer benutzen und damit extrem große Zahlen "faken" zu können.


    Sprich einen Integer namens Millionen: mit einem gedachten "Maximalen Wert" von : 999.999.999 welches den gesamten Millionen Rahmen abdecken sollte.


    Nun erstellst du eine neue Variable Billiarden: mit einem gedachten "Maximalen Wert" von: 999.999.999 usw. usw. Nun musst du natürlich viele verschiedene Berechnungen anstellen und alles sollte eine gewisse Ordnung haben mit kleinsten anfangen. Dabei hast du auch verschiedene Integer Variablen welche deine "Einnahmen" wiederspiegeln und in der gleichen Art aufgebaut sein.


    Bleiben wir beim obigen Beispiel und du hast genau 999.999.999 und bekommst nun im nächsten Tick 10 gut geschrieben. Dabei setzt du das Millionen Integer auf 9 und der Billiarden Integer wird auf 1 gesetzt. Setzt man diese Variablen zusammen hast du 1.000.000.009. Billiarden ->1 _ 000.000.009 <- Millionen. Ich hoffe du hast verstanden was ich damit meine. Um alles zu vereinfachen kannst du ein oder mehrere Integer Arrays nutzen um alles gut durchrechnen zu können, aber in der Theorie sollte es damit kein Problem sein auch Septvigintillionen und mehr zu erreichen.

    Vielen Dank :) War sehr überrascht Markiplier spielen zu sehen^^ Leider wussten sie noch nicht das man mit R resetten kann.


    @Aragom


    Freut mich das es dir gefällt.


    In den nächsten tagen/wochen müsste mein Asset Importer fertig sein, dann kann man auch eigene Assets in die custom maps laden. :)

    Sehr cool :)


    Wenn du mit Rechtsklick auf die Löcher gehst kannst du Einstellen für welches Loch die Flagge angezeigt werden soll. Im Editor wird das jedoch noch nicht funktionieren, wohl aber beim richtigen spielen später. :)

    Ja Steam nimmt in der Regel 30%, kann aber noch nicht sagen wie man genau rechnen muss um zu sehen wie viel am Ende übrig bleibt. Gerade das mit den Steuern ist noch etwas undurchsichtig wie das gehandhabt werden muss und was Steam einen wirklich überweist. Ich kann sicherlich mehr dazu sagen wenn ich die erste Zahlung erhalten habe und meine Steuerberaterin das alles überprüft hat. :)

    Danke danke :)


    Ja Steamspy schätzt nur ist aber in der Regel recht nah dran, zumindest manchmal. Momentan werden wieder 4,2k angezeigt und vor 3 tagen waren es 5,8k. Aber Tatsache ist, dass die 5k marke nun auch in echt geknackt wurde. :)

    Ich kann noch keine Verkaufszahlen oder ähnliches nennen, da das Spiel noch nicht mal zum verkauf angeboten wurde, sondern erst am 17.02 verfügbar ist. Desweiteren habe ich keinerlei Kontakt zu Pietsmiet sondern nur zu Dhalucard der von sich aus weil Ihm das Spiel gefallen hat Keys für die Piets wollte. Das aber nur am Rande. Es wäre wahrscheinlich profitabler gewesen wenn ich das bei den ersten Videos schon zum verkauf angeboten hätte, aber Qualitätskontrolle geht vor.


    Es kommt immer darauf an was für ein Spiel am erstellt. Wenn es sich um ein gutes Spiel handelt würde es sich auch ohne Let's Player durchsetzen können, dafür gibt es genügend Beispiele. Qualität zahlt sich fast immer aus wenn es erkannt wird. Man kann sich mit Let's Playern und Streamern natürlich einen vorteil schaffen indem man schnell Popularität durch Views bekommen kann, was aber noch lange nicht heißen muss, dass das Spiel dann auch ein Erfolg wird. Views != Verkaufszahlen.
    Ich kann zwar deinen Standpunkt durchaus nachvollziehen, aber halte ihn dennoch für übertrieben. Soweit wie ich das beurteilen kann sind Spiele meist nur dann nicht erfolgreich wenn das Genre übersättigt ist, Spiel eine mindere Qualität besitzt, wenig Innovation oder es sich um ein Nischenprodukt handelt.
    Es ist wichtig das man den Markt immer im Auge behält. Hätte mein Spiel keinen Editor bzw. ein unübliches Schlag-System, würde ich alles drauf setzen, dass es nur von wenigen/keinen beachtet werden würde. Nur dadurch, da bin ich mir sicher, konnte ich mich von der Masse abheben. Wobei ich natürlich immer noch nicht weiß ob mein Spiel ein Erfolg wird oder nicht trotz der Views bisher. Es kommt ganz drauf an was die Spieler aus dem Spiel und Editor/Workshop machen um das Interesse über eine lange zeit aufrecht zu halten.

    Hehe :D Dhalucard ist vor einer woche auf mich zugekommen und hatte gefragt gehabt. :) Hat auch schon viel Feedback gegeben und Bugs gezeigt die ich momentan 24/7 am fixen bin :D

    Hehe :D Dhalucard ist vor einer woche auf mich zugekommen und hatte gefragt gehabt. :) Hat auch schon viel Feedback gegeben und Bugs gezeigt die ich momentan 24/7 am fixen bin :D