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

1

21.01.2009, 20:21

Tasten Funktion Programmieren.

Hallo, ich habe in anderen Foren gelesen, das man bei den Spielen Programmieren muss. < logo :lol:

Also ich meine z.B.
Tasten Funktion
Chat Funktion
Menü Funktion

Wie schon bekannt weis ich vom Programmieren 0.01%. :oops:
Darum würde ich gerne einmal von euch Programmierern wissen, wie man so etwas macht.

Also das wenn ein Spieler I klickt sich das Inventar öffnet.
Oder wie Programmiert man einen Chat im Spiel ?

Ich habe zwar einige Seiten gefunden wo es erklärt wurde, bin aber nicht wirklich schlau daraus geworden. Naja gut, das so was für einen Unerfahrenen viel zu schwer ist, ist klar. Aber mir brennt das auf der Zunge. Ich möchte einfach gerne wissen wie man so was macht.
Das ein Spieler auf eine Plattform rennt und dann ein Fenster aufgeht wo man aussuchen kann wo man hinreisen möchte.
Ist das wie verlinken ? Das man einen Code eingibt mit Koordinaten, wo der Spieler landen soll ? Oder wie kann man sich so etwas vorstellen ?

(habe in suche nichts gefunden)
Account wurde gelöscht

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

21.01.2009, 20:34

Phu.. fang selbst an so etwas zu programmieren. ;)

Also das Fenster ist recht einfach. Da hast du zuersteinmal das fertige Fenster erstellt. (Wie auch immer mit Text, Buttons, Bilder usw. ) und dann kannst du einfach mit einer bool-Variable switchen, ob das Fenster gezeigt wird, oder nicht. Und diesen switch kannst du dann auf die Taste legen, die du willst.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
if ( taste == 'I' )
    showWindow ? showWindow = false : showWindow = true;

...

if ( showWindow )
{
   ...
   Window->update (); //auch schön nur hier updaten, damit keine klicks im spiel auf das fenster gehen
   Window->render ();
}


Das mit der Plattform kannst du auch recht einfach machen, indem du das gleiche nimmst wie oben, ausser, dass du keinen switch, sondern eine ständige Bedingung hast.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//wenn der spieler näher, als 5.0 ist, dann zeige das Fenster, sonst nicht
if ( (plattformposition - spielerposition).radius () <= 5.0f )
    showWindow = true;
else
    showWindow = false;

...

if ( showWindow )
{
   ...
   Window->update (); //auch schön nur hier updaten, damit keine klicks im spiel auf das fenster gehen
   Window->render ();
}


Und teleportieren ist etwas vom einfachsten. ;)
Du kannst den Spieler einfach neue Positionen zuweisen und fertig.

Ich weiss jetzt nicht, wieviel du von dem überaupt verstehst, aber vieles wird dir schon klarer, auch wenn du nur ein einfaches kleines Spiel selbst programmierst. Wenn es dich interessiert, würde ich dir das unbedingt empfehlen..

babelfish

Alter Hase

Beiträge: 1 222

Wohnort: Schweiz

Beruf: Informatiker

  • Private Nachricht senden

3

21.01.2009, 20:34

Ganz simpel: Abfragen und Aktionen.

Wurde I gedrückt? Zeige das Inventar.
Befindet sich der Spieler auf der Plattform? Zeige das Reisemenü an.

Natürlich ist das ganze komplizierter. Alles was auf dem Bildschirm erscheint, muss programmiert werden. Alle Aktionen müssen ebenfalls programmiert werden.

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

4

21.01.2009, 21:54

Die Punkte die du genannt hast sind da noch relativ simpel. Wobei zum Beispiel bei der Chat Funktion die Netzwerkkommunikation für unerfahrene Entwickler nicht ganz so einfach ist.

Ansonsten.. es ist schwierig grob zu umreißen wie sowas funktioniert. Die Grundmittel sind einfach (Abfragen, Berechnungen und Sprünge) jedoch kann man ohne die nötige Erfahrung kaum einblicken wie diese dafür zu nutzen sind.

Insbesondere gibt es auch Probleme die für einen Menschen unheimlich einfach zu "sehen", für einen Computer jedoch außerordentlich schwierig sind.
Letztenendes kann man das darauf zurückführen, dass der Computer nur eine mathematische Repräsentation der Spielwelt kennt. Schon so einfach anmutende Sachen wie Kollisionen zwischen Objekten können einen nicht ganz unbedeutenden Aufwand in der Programmierung bedeuten. Ein Mensch sieht das einfach, ein Computer muss das aus einem riesigen Haufen von Vektoren und Matrizen errechnen.
Erschwerend kommt noch dazu, dass das ganze auch noch schnell genug funktionieren muss damit keine Diashow spielt. Darum muss man oft Kompromisse eingehen und zum Beispiel kleine Fehler bei der Kollisionserkennung zulassen.

Beneroth

Alter Hase

Beiträge: 969

Wohnort: Schweiz

Beruf: Software Entwickler

  • Private Nachricht senden

5

21.01.2009, 22:23

Wie gesagt, programmieren ist nichts anderes mehr oder weniger als sagen "wenn <irgendwas> dann tu <irgendwas>" zu definieren, und das für ALLES.

Beispiel:

1) "Wenn I gedrückt worden ist öffne das Inventar-Fenster"

nur, leider weiss der PC von sich aus NICHTS, dass heisst ich muss ihm auch sagen was "I drücken" bedeutet bzw. wie er das merken kann (er merkt dass indem die Tastatur eine Zahl ändert die er ansehen kann), und man muss ihm sagen was "Öffne das Inventar-Fenster" bedeutet:

2) "Wenn das Inventar-Fenster geöffnet werden soll, dann zeichne an der Position x/y auf dem Bildschirm einen Rahmen von der Farbe, darin an der Position x/y den Fenster-Namen "Inventar", darunter zeichne so viereckige Boxen (an den positionen x1/y1, x2/y2, usw usw), in die viereckige Boxen die Bildchen von den Items die im Inventar vorhanden sind, in die position x/y von jeder box die Anzahl der items auf dem platz"

das führt aber schon wieder zu ganz vielen kleinen sachen:

a) "Wenn ich an der position x/y was gezeichnet werden soll, dann färbe dort die pixel mit den angegeben farbwerten (aus einer gegeben grafik oder so)"

von der linken bildschirmseite soviele (wie die Zahl x sagt) nach rechts zählen, dann kommst du zu einer senkrechten reihe von pixeln. dann von oben in dieser Spalte soviele wie die Zahl y sagt nach unten zählen, und dann kommst du auf einen Pixel, dieser Pixel bzw. die Zahl dahinter musst du ändern zum wert rot..

b) "Wenn ein Pixel mit der Position 5/4 rot gefärbt werden soll, dann gehe in den Speicherbereich Dings und ändere da die und die zahlen zu dem neuen wert der rot bedeutet"

.. welche Zahl rot bedeutet muss vorher irgendwo festgelegt worden sein
.. welches der Speicherbereich Dings ist muss vorher irgendwo festgelegt worden sein...

--> faktisch muss man bei jedem einzelnen pixel der in dem bereich wo das fenster hinkommt (sehr wahrscheinlich) die farbe angepasst werden.
Das können einige wenige sein, oder auch ein paar tausende Zahlen die irgendwo verändert werden müssen (und zwar nicht irgendwie, sondern eben so dass sie die richtigen farben danach bewirken), und diese zahlen sagen dann was für ne farbe auf deinem Bildschirm angezeigt wird.


(alles was du auf dem bildschirm siehst sind eigentlich farbige punkte.. gewaltig viele punkte.. punkte die aneinander sind und die gleichen farbe haben siehst du als linie, wenn viele punkte neben- und übereinander die gleiche farben haben als fläche. aus punkt, linie und fläche ist jedes bild aufgebaut)

Dabei gibt es viele Arbeiten* die oft sehr gleich sind, die fasst man beim Programmieren zusammen so dass man nicht bei jedem WENN alles dem pc nochmal erklären muss was es bedeutet, sondern nur einmal für jedes wenn.

*Zahlenänderungen, bzw. am schluss immer irgendwelche änderungen von nullen zu einsen oder umgekehrt oder gemischt


Aber es gibt eben sehr sehr viele WENNS, weil der PC weiss gar nichts, du musst ihm ALLES sagen, und auch noch was ALLES bedeutet sozusagen ;)


War das irgendwie verständlich und bisschen nachvollziehbar? :roll: :lol:

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

22.01.2009, 10:32

Schnapp dir eine Programmeirsprache deiner Wahl, setz dich hin und schreib ein Programm das "Hello World!" auf die Textkonsole ausgibt.
So, oder so ähnlich hat praktisch jeder zu Programmieren begonnen.
Wenn du das geschafft hast, dann ist schonmal der Grundstein für eine erfolgreiche Programmier Karriere gelegt. Von einem Spiel bist du dann noch viele, viele Meilen weit entfernt, aber jeder beschwerliche Weg beginnt mit einem Schritt. Und wenn dus wirklich wissen und verstehen willst, dann wirst du um diesen und abertausende weitere Schritte nicht herumkommen ;)

7

22.01.2009, 12:29

Das man um so was nicht herum kommt, weis ich, Programmieren ist nun mal in der Computern internen Welt, die Nationale Sprache. Programmieren versteht jeder eigentlich wenn er es kann. So habe ich es bis dato verstanden. Nun ich versuche erst einmal zu begreifen wie groß die Menge ist, die ein Spiel ausmachen, wie gesagt, renne ich nicht los und schreie euphorisch ich will ein Spiel machen, das ist besser als alle anderen.
Das kann man niemanden Empfehlen, man muss sich erst mal klar werden was man sich da antut mit. Was für arbeit man hat.

Das ihr sagt so was ist "simpel" ist für mich noch Welten weg. Andere sagen so Programmierungen sind leicht, da gibt es schlimmere, das glaube ich sofort.
So denke ich das die Programmierung eines NPC auch noch zu den leichteren Dingen gehört, die Programmierung einer Komplexen abfolge bestimmter Ereignisse oder so ist wieder schwerer. So weit Richtig ?
Also ein NPC steht an einem Platz und ist Programmiert das wenn der Spieler ihn anklickt er bestimmte Optionen vorgibt. Auf die er dann nach klicken reagiert.
Ein Monster hingegen was in dem Spiel lebt besitzt eine KI also ist so was viel schwerer. Denn je ausgefallener die Programmierung der KI um so realistischer regieren die Monster auf Spieler. So weit Richtig verstanden?

Also muss man wenn man ein Spiel baut, an viele Dinge denken, und es so machen das Programmierer verstehen. Die man später mal im Team hat.
Was muss man in einem Spiel alles Programmieren und was fällt unter Animation. Auf eine Aktion folgt eine Reaktion, dass muss man den PC beibringen. Also muss man ihm sagen, pass auf, der Spieler hat auf das Monster geklickt, nun wird er es vielleicht angreifen, die Reaktion des Monsters ist daher festgelegt in einem Programm.
Der Spieler greift das Monster an und ein Programm berechnet, den schaden, denn der Spieler verursacht hat. < uff das kommt ja auch noch.
Das Programm muss also Aussagen was für eine Waffe es ist, wie wurde dieser schaden Ausgeführt und wie viel schaden ist entstanden. Danach wird das dem Monster abgezogen und seine Reaktion ist angreifen/weglaufen.
Wobei bei dem Treffer kommt noch eine Variable dazu, trieft man das Monster an den Füssen ist ein Miss zu lesen, trifft man es am Kopf macht man einen Volltreffer.

Ich kenne ein Spiel wo es so ist, das die HP und die Treffer/Schaden sich je nach stelle wo man getroffen wurde verändert. Hat man als Spieler Schuhe an +4 ist der Schaden dort fast 0 hat man einen Helm an der clean ist, ist der Schaden fast tödlich.
Hat man ein Schild an kommen noch Block oder Miss dazu. Das muss man alles Programmieren. Das ist eine "sau schwere arbeit" oder ?

mfg S.E.N

Das ist wirklich der Himalaja oder ein Wolkenkratzer, so ein Spiel.
Account wurde gelöscht

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

8

22.01.2009, 12:36

so die wichtigsten fähigkeiten, die du entwickeln musst beim programmieren sind folgende (leute ergänzt wenn ich was vergesse):

1. Probleme in teilprobleme zerlegen
2. von spezialfällen aufs allgemeine schliessen
3. abstraktionsdenken
4. ausdauer

das schlimmste was du machen kannst ist dieses krasse "überkreuz-denken", d.h. so vieles in betracht ziehen siehe hier:

Zitat


Ich kenne ein spiel wo es so ist, das die HP und die Treffer sich je nach stelle wo man getroffen wurde verändert. Hat man als Spieler Schuhe an +4 ist der Schaden dort fast 0 hat man einen Helm an der clean ist, ist der Schaden fast tötlich.
Hat man ein Schild an kommen noch Block oder Miss dazu. Das muss man alles Programmieren. Das ist eine "sau schwere arbeit" oder ?


das musst dir alles zerlegen und nacheinander aufbauen, sonst kriegst du ne meise :D.

wenn du das beherzigt ist es gar nicht so schwierig, dann kommt es nurnoch auf 4. an ;)

9

22.01.2009, 12:42

Es ist ganz einfach: Wenn du jeden kleinen Scheiß separat einprogrammierst wird dien Quellcode riesen groß, unübersichtlich, sehr schwer wartbar und ruckzuck kommen Millionen von Fehlern hinzu, da du an irgendeiner Stelle irgendwas vergessen hast.

Die eigetnliche Kunst ist es, flexibel zu abstrahieren. So gibt es z.B. nicht Füße, Bauch und Kopf, sondern es gibt Trefferzonen. Jede davon wird gleich behandelt. Das heißt nicht, dass es egal ist, wo man getroffen wird, sondern dass jede Zone z.B. einen Schadensmultiplikator hat (Kopf: 10Fach Schaden, Bauch normal, Beine halber Schaden). Will man neue Trefferzonen mit anderen Werten hinzufügen, ist das jetzt kein Problem.
Will man aber, das man langsamer läuft, wenn man an den Füßen getroffen wird, kann man das vergessen, denn das System ist dafür nicht ausgelegt und zu unflexibel. Ein naiver und dummer Ansatz wäre es, jeder Trefferzone einen zweiten Wert zuzordnen, wie viel langsamer der Mensch wird. (Beine 5, Bauch 0, Kopf 0).
Wenn man noch 5 von den Werten hat, die eh meistens 0 sind, ist das ganze Design dann wieder dumm. Also muss man wiederum flexibler denken (und z.B. die Fußtrefferzone von der normalen ableiten).

Der Vorteil heute ist, das man eine Menge Rechenzeit hat, man schraubt meinetwegen die Grafik etwas runter und kann dafür sehr viele andere Dinge berechnen. Früher war alles knapp, da musste man noch alles seperat optimieren, um ein tolles Spiel zu schaffen. Das kann man heute schon abstrakter und damit besser erweiterbar machen.
Lieber dumm fragen, als dumm bleiben!

10

22.01.2009, 12:42

Verstehe, aber wie Programmiert man so was, klar als leihe ohne jede Form von Ahnung, klingt diese Frage mehr als bescheuert, gebe ich zu. Denn ich würde es wahrscheinlich nicht verstehen als Code. Doch mich interessiert das einfach, wie Programmierer arbeiten und ich kann ja schlecht bei einer Firma reinplatzen und sagen zeig mal. *g :lol:

Also wie muss man das denn auseinander bauen, ok mal überlegen.

1 Reaktion auf Aktion - Spieler Klickt Figur an.
2. Angriff der Figur es erfolgt ein gegen Angriff.

... aber wie wird das berechnet mit dem Schaden ?
Als0 die Waffe ist eine Level 1 mit 90-150 Schaden das bedeutet, das wenn man Trift wird in diesem Rahmen schaden gemacht. @.@ " ist ja irre was es da gibt ... :shock: und das muss man alles Programmieren ... wuffff...

(EDIT : wurde ja beantwortet, seh grade)



EDIT : Ja in RFO nennt man das Kritten <oder so.
Das man in vollem Galopp getroffen wird und eine Vollbremsung hinlegt, im schlimmsten Fall sogar ein Rollback.
Account wurde gelöscht

Werbeanzeige