Wie ein Spiel programmieren?

Wenn du nen Erfolgserlebnis willst guck dir LOGO an, eine absolut einfache Sprache die dir am Anfang die Möglichkeit bietet einfache Dinge zu vollführen, für später zwar kaum zu ntuzen, aber ohne Erfolge wirst du schnell keine Lust mehr haben.

Ne einfache Aufgabe für Logo:

Hasenschießen:

Erstelle erst einmal eine "Spielfläche"
lege per Zufallszahl die Position des Hasen fest
mach eine Abfrage an welche Stelle du schießen willst (ohne die tatsächliche Position auszugeben)
überprüfe ob getroffen wurde wenn nein errechne eine weitere Zufallszahl die die Position des Hasen ist, aber da der Hase (noch) nicht zurückläuft muss diese natürlich höher als die vorherige sein
und so weiter

falls doch getroffen wurde lass eine Bitmap anzeigen die einen toten Hasen zeigt.

Wenn du damit fertig bist wofür du sicher einige Zeit benötigst, kannst du dem Hasen beibringen Haken zu schlagen wenn du das geschafft hast kannst du dir ein Schadensmodell basteln.
 
Ich würde eher in Richtung Mod ansetzen.. Dort sind meist schon die Editoren und Engine, mit denen die Spiele erstellt wurden, mit dabei. Viele schwören in diesem Atemzug auf C++ u/o C#

Für Point&Click Adventures: Visionaire
http://www.visionaire2d.net/

Für 2D hätte ich ein kleines Spiel, daß ich damals gemacht habe. Ist eine Art Pacman in C geschrieben:

Code:
/* robots.c
  */

#include <stdio.h>
#include <string.h>

#define bool int
#define false 0
#define true 1

/* unsere Welt besteht aus einem Rechteck mit */
/* Breite XRANGE und Hoehe YRANGE; links unten ist Zelle (0;0) */
#define XRANGE 50
#define YRANGE 24

/* die Welt kann (nur) folgende Objekte enthalten: */
#define EMPTY '.'
#define WALL '#'
#define ME '@'
#define ROBOT 'R'
#define JUNK 'X'


void init_world(char world[XRANGE][YRANGE], int level)
/* fuelle Welt mit Waenden und Robotern */
{
  int x, y;

  for (x=0; x<XRANGE; x++)
    for (y=0; y<YRANGE; y++)
      world[x][y] = WALL;
  for (x=1; x<XRANGE-1; x++)
    for (y=1; y<YRANGE-1; y++)
      world[x][y] = EMPTY;
  switch (level)
  {
  case 0: /* test level */
    world[5][5] = ROBOT;
    world[10][5] = ROBOT;
    break;
  default: /* nothing */
    break;
  } /* end switch */
}


void show_world(char world[XRANGE][YRANGE])
{
  int x, y;

  printf("\n\n\n");

  printf("[[ hier soll das Spielfeld angezeigt werden ]]\n");

  return;
}


void beep(void)
{
  printf("\a");
  return;
}


void move_robots(char world[XRANGE][YRANGE], 
                 int goal_x, int goal_y, int *n_rob)
{

  printf("[[ jetzt ziehen die Roboter ... ]]\n");
  *n_rob = 1; /* damit main nicht auf undefinierten Wert zugreift */

  return;
}


int main(void)
{
  char world[XRANGE][YRANGE]; /* Spielfeld */
  int me_x, me_y; /* Position des Spielers */
  char commandline[10], command, msg[100];
  int level;
  bool alive, ok;
  int number_of_robots;

  printf("Robots, ein geniales Produkt von mir\n");
  printf("\n");
  printf("Start-Level? ");
  scanf("%d", &level);
  init_world(world, level);
  me_x = XRANGE/2; me_y = YRANGE/2;
  world[me_x][me_y] = ME;
  alive = true;

  do
  {
    show_world(world);
    printf("Now what? (h for help) >> ");
    gets(commandline);
    command = commandline[0];
    ok = false;
    switch (command)
    {
    case '2': /* go south */
      if (world[me_x][me_y-1]==EMPTY)
      {
        world[me_x][me_y] = EMPTY;
        me_y--;
        world[me_x][me_y] = ME;
        ok = true;
      }
      break;
    case '4': /* go west */
      if (world[me_x-1][me_y]==EMPTY)
      {
        world[me_x][me_y] = EMPTY;
        me_x--;
        world[me_x][me_y] = ME;
        ok = true;
      }
      break;
    case 'h': /* Hilfe: Erklaerung moeglicher Eingaben */
      printf("\n");
      printf("Moegliche Eingaben sind\n");
      printf("x = Spiel abbrechen\n");
      printf("[12345679h<space> ebenfalls erklaeren]\n");
      printf("... usw.\n");
      printf("\n");
      printf("(RET druecken zum Weiterspielen)");
      gets(commandline);
      break;
    case 'x': /* Abbruch */
      alive = false;
      strcpy(msg, "Hey, is there really anything better than ROBOTS???");
      break;
    default:
      break;
    } /* end switch */
    if (ok)
    { 
      move_robots(world, me_x, me_y, &number_of_robots);
      if (world[me_x][me_y]!=ME)
      {
        alive = false; /* player is dead */
        strcpy(msg, "Sorry, loser! Have more luck next time.");
      }
      else if (number_of_robots==0)
      {
        alive = false; /* player has won */
        strcpy(msg, "Wow! You are a genuine robot buster.");
      }
    }
    else 
      beep(); /* invalid command */
  } while (alive);

  show_world(world);
  printf("\n");
  printf("%s\n", msg);
  printf("... exiting this exciting game ...\n");
  printf("\n");

  return 0;
}
/* end of file robots.c */
 
@TE: Mir scheint du hast das noch nicht so ganz begriffen. Eine Programmiersprache zu erlernen ist ein sehr großer Aufwand, erst recht wenn du noch keine Erfahrungen hast. Das ist nicht so mal eben Video anschaun und dann kann man das :freak:

Du musst dich bei sowas erst ganz langsam von kleinen Konsolenanwendungen (die dir zb das was du einigbst zweimal ausgeben) über Programme mit grafischer Oberfläche zu Spielen hangeln. Das dauert. Lange. Sehr Lange.

Wenn du immernoch Interesse hast, würd ich dir C++ empfehlen, da es einfach Standard ist.
 
ich würde dir, da es ziemlich aufwendig ist extra ne programmiersprache zu lernen,
empfehlen programme wie RPG-MAKER zu probieren....
damit kann man auch ohne großartige kenntnisse nette spiele erstellen
mit dem programm sind dir verdammt viele möglichkeiten gegeben (wettereffekte, KI, licht und schatten.....) aber eben nur in 2D

ein beispiel eines fertigen games findest du hier:

http://vampiresdawn.fair2kids.net/
Vampires Dawn 2 is recht nice

MfG sAngrEal
 
Danke für den Tipp Marc !
 
Für Adventures/Rollenspiele kannste auch den RPG-Maker benutzen.
Vorteil: Sehr einfach zu bedienen; für Anfäng geeignet.
Nachteil: Die äußere Form ist schon komplett vorgegeben, für welche man dann das "Innere" programmiert.
Ich hab schon mehrere RPG's mit dem Programm erstellt und mir hats sehr Spaß gemacht ^^ Nur wirds irgendwann einseitig, da vieles halt vorgegeben. Vielleicht hat sich das auch schon geändert. Ich hab zuletzt vor 4 Jahren damit (RPG-Maker 2000) programmiert. Jetzte gibts schon 3 oder 4 komplett neuere Versionen... Ist aber für den Anfang empfehlenswert! Auch um erstmal reinzukommen, wie soetwas grundsätzlich funktioniert.

Edit: Oh, da war einer schneller ...
 
ähm nur für 2d sein soll, sollte man mal nach rpg maker googlen
is ziemlich einfach damit was zu machen
 
Zuletzt bearbeitet:
JA den kenn ich schon und habe auch Tutorials dazu gefunden, danke !
 
Vielleicht solltest du dir erst mal klar werden was du wirklich willst.
Liegt der Schwerpunkt bei Spiele kreieren oder beim programmieren?
Willst du schnelle Erfolge oder ist dir der lange und steinige Weg lieber?
Such dir Leute mit denen du zusammen kleinere Projekte machst, aber ihr solltet dabei das gleiche Ziel verfolgen, siehe oben
 
Fange erst mal mit C++ oder JAVA an, die Grundlagen sind fast identisch. Wenn du die Grundlagen verstanden hast kannst du ja nochmals hier posten. Für Java spricht, das es auf fast allen Handys zum laufen bringen kannnst, also kleine 2d Programme. Soll es dann später richtig auf 3d Spiele auf dem PC zugehen ist C++ die bessere Wahl.
 
C++ halte ich für keine gute Wahl mit diesen Voraussetzungen und dem Ziel. Es ist viel zu kompliziert und frustrierend und wird außerdem ewig dauern, bis du den ersten Erfolg erzielst.
Die einfachste Möglichkeit für deine Bedürfnisse ist Adobe Flash mit der dazugehörigen Scriptsprache ActionScript 2 (nicht 3, das geht schon wieder in Richtung "richtige Programmierung").
Damit kannst du alle möglichen 2D-Spiele realisieren und passende Tutorials sind zahlreich verfügbar.

Falls du dir mehr zutraust, dann empfehle ich mit den Grundlagen der Programmierung in C# anzufangen und sobald du sicher im Umgang damit bist, lädst du dir das XNA Game Studio von Microsoft herunter und fängst damit an, bereits vorhandene "Starter Kits" zu modifizieren. Auch dafür gibt es einige Tutorials und damit ist auch noch wesentlich mehr möglich als mit Flash.
 
Zurück
Oben