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

31.05.2015, 15:02

SFML - Was braucht man zum Einstieg (zusätzliche Tools?)

Hallo,

ich möchte mit der Programmierung in SFML beginnen. Die wichtigsten Grundlagen von C++ kann ich bereits. Allerdings habe ich bisher immer ohne Grafik gearbeitet. Das möchte ich jetzt gerne ändern. Allerdings bin ich quasi ahnungsloser blutiger Anfänger und habe mir hier ein wenig Hilfe beim Einstieg erhofft. Ersteinmal wollte ich wissen, wie man am Besten einsteigt, ob es Sachen gibt, die man bedenken muss, ob es zusätzliche Tools gibt die ratsam wären um ein gutes Spiel zu schaffen. Außerdem würde mich interessieren, wo man geeignete Tutorials/ Literatur zum Thema und für Anfänger findet. Ich habe schon auf
http://www.sfml-dev.org/index.php einige Hinweise entnommen. Findet man dort alles, oder sollte man zum Erlernen der Bibliothek noch andere Quellen zur Hilfe ziehen?

Ich habe hier mehrfach von Nutzern gelesen, die zusätzliche Programme verwenden um die Grafik umzusetzen. Brauche ich sowas am Anfang? Und zuletzt: Ist es realistisch und möglich ein einfaches Sidescrollspiell zu entwickeln, oder ist die Erstellung eines bewegten Spieles für den Anfang nicht ratsam?
Über Tipps und Tricks sowie gute Antworten freue ich mich und hoffe bald auch so gut zu sein, dass ich ein paar einfache Grafiken bewegen kann :D

darioprogrammiert :)


PS: Gerne hätte ich auch Erfahrungen über euren Einstieg gehört!
SCHWEIGEN IST SILBER, REDEN IST GOLD :D

2

31.05.2015, 15:19

Ah, du hast jetzt eine eingenen Post dafür eröffnet. Ist wahrscheinlich ganz gut so, dann sehens auch mehr Leute.
Dann schreib ich jetzt auch hier nochmal :)

Also für den Anfang reicht SFML vollkommen. Und ich hab jetzt gesehen, dass du ja schon ein Spiel auf Konsolenbasis geschrieben hast. Ich habe damals alle Tutorials von der SFML-Seite "nachgeschrieben", also selber ausprobiert, um mir einen Überblick zu verschaffen. Ich würde dir vorschlagen das einfach mal zu tun. Du kannst für den Anfang ja einfach mal Kreise oder Kästen sich bewegen lassen, nur dass du verstehst, wies grundsätzlich funktioniert.
Und ich glaube, dass es realistisch ist, dass du ein bewegtes Spiel programmieren kannst.

Und was für ein Zeichenprogramm du verwendest ist letzendlich Geschmacksache.

Lares

1x Contest-Sieger

  • Private Nachricht senden

3

31.05.2015, 17:34

Was für Programme du zur Grafikerstellung verwendest hängt vom gewünschten Stil deines Spiels ab. Als Anfänger sollte man zwar 2D Spiele machen anstatt 3d, man kann aber durchaus 3d Modelle in z.B. Blender erstellen und diese als 2D Sprites exportieren.
Steht man eher auf Pixelgrafik, kann man Gimp oder ein auf Pixelgrafik spezialisiertes Tool (falls nötig) benutzen. Hat man nen Grafiktablet und will eher einen gezeichneten Stil ala Child of Light oder Mangastil umsetzen, nimmt man ein Zeichenprorgamm, dass spezielle Funktionen dafür bereitstellt.

Aber ebenso ist es natürlich auch legitim einfache Formen als Grafiken zu verwenden (Pong, Thomas was alone). In dem Fall brauchst du überhaupt kein Grafikprogramm, da die SFML diese Primitive anzeigen lassen kann.

Speziell für die SFML wirst du nichts weiteres brauchen als die Tutorials auf der Hauptseite. Aber je nachdem, was du für ein Spiel umsetzen willst, musst du dir entsprechende Artikel, Tutorials und vllt. sogar Bücher suchen, die dir weiterhelfen. Das kann dir niemand abnehmen. Fang am Besten einfach an und schau wie weit du kommst.

4

31.05.2015, 18:35

Hallo,

danke für die Antworten.
Du kannst für den Anfang ja einfach mal Kreise oder Kästen sich bewegen lassen, nur dass du verstehst, wies grundsätzlich funktioniert.
Das habe ich schon gemacht. ich habe mir die Texturen und die Formen angesehen und eigene Formen entworfen. Außerdem haben wir ein Programm geschrieben, mit dem sich ein Smiley (das ist nur so ein spleen von mir, eigentlich geht jede xbelibige Figur) in Pacmanoptik bewegt. Das ganze läuft recht flüssig und gut.

Codeausschnitt:

C-/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
#include <SFML/Graphics.hpp>#include <iostream>#include <string.h>#include <list>

using namespace sf;

int main()
    
{
 int wechsel=0;

int pos_X=0;int pos_Y=0;

    RenderWindow window(VideoMode(800, 600), "Smiley Bewegung");
 window.setFramerateLimit(60);


 Event mainevent;
 CircleShape smiley(25, 100); // smiley smiley.setTexture(&günter2);

    while (window.isOpen())    {                while (window.pollEvent(mainevent))        {   if(Keyboard::isKeyPressed(Keyboard::Up))    wechsel=1;   if(Keyboard::isKeyPressed(Keyboard::Right))    wechsel=2;   if(Keyboard::isKeyPressed(Keyboard::Down))    wechsel=3;   if(Keyboard::isKeyPressed(Keyboard::Left))    wechsel=4;  }
  if(pos_X==0 && wechsel==4)  wechsel=2; if(pos_X==750 && wechsel==2)  wechsel=4; if(pos_Y==0 && wechsel==1)  wechsel=3; if(pos_Y==550 && wechsel==3)  wechsel=1;

 if(wechsel==1){  pos_Y=pos_Y-2;  smiley.move(0,-2);} if(wechsel==2){  pos_X=pos_X+2;  smiley.move(2,0);} if(wechsel==3){  pos_Y=pos_Y+2;  smiley.move(0,2);} if(wechsel==4){  pos_X=pos_X-2;  smiley.move(-2,0);}
  window.clear();
  window.draw(smiley);    window.display(); }
    return 0;}



Dahinter habe ich eine in Paint erstellte Grafik (Smiley) gelegt um das Ganze interessanter zu machen.
Aktuell bin ich noch in der Experimentierungsphase, allerdings würden mich noch 3 Dinge interessieren:

1. Kann ich ein langes Bild in Paint zeichnen und dieses im Hintergrund an der Figur vorbeibewegen? Also quasi einen Sidescroller, sodass das Hintergrundbild sich bewegt und so eine Spielbewegung dargestellt wird? ich habe schon was von Kamerabewefung gelesen, allerdings noch keine Möglichkeit gefunden ein Hintergrundbild einzufügen (braucht man da sog. Sprites?)

2. Kann ich einfach Musik einfügen? Das wäre lustig.

3. Kann mir jemand KURZ auf Deutsch sagen, was ein Sprite (nicht das Getränk :D ) ist und wozu ich den benötige?


Als Anfänger sollte man zwar 2D Spiele machen anstatt 3d, man kann aber durchaus 3d Modelle in z.B. Blender erstellen und diese als 2D Sprites exportieren.
Ich bin tatsächlich noch in den Anfängen. An 3D hatte ich nie gedacht. Nachdem ich lange im Konsolenfenster gearbeitet und an Grafikbibliotheken gescheitert bin ist es für mich schon eine kleine Sensation einen Kreis zu sehen! :D

darioprogrammiert
SCHWEIGEN IST SILBER, REDEN IST GOLD :D

5

31.05.2015, 18:41

1) Ja, mit einem Sprite wäre das möglich. Ein Sprite ist quasi nur ein Bild, dass du in dein Spiel lädst und anzeigen kannst. Wenn Du mit Paint eine Grafik erstellt (z.B. Smiley) kannst Du das auch mit einem Sprite darstellen.
2) Ja, es gibt eine Music-Klasse. Damit kannst Du ganz einfach eine Musikdatei laden und abspielen: http://www.sfml-dev.org/documentation/2.…sf_1_1Music.php
3) Siehe oben, im einfachsten Sinne eine 2D-Grafik.

6

31.05.2015, 19:17

Danke für die Antwort. ich werde das nächstes Wochenende mal testen. ich habe auch schon mal getestet, theoretisch kann man in paint ja auch einiges machen (siehe Anhang) --> auch ein sich bewegendes Bild (wie aus dem auto heraus gefilmt) sähe genial aus. Das bietet auf jeden Fall Experimentierungspotential!

Mit den Sprites werde ich mich dann auch nochmal beschäftigen müssen. Ich habe auch schon einige Ideen für Testprogramme. Ist die Mausabfrage in SFML schwer zu erlernen. ich habe da mal reingelesen. Das wirkt irgendwie immer relativ komliziert. Vor allem wenn man auf den Ort des Mauszeigers zugreifen möchte. Für eine Art Button wäre das aber natürlich nützlich :D
»darioprogrammiert« hat folgendes Bild angehängt:
  • test Leveldesign1.png
SCHWEIGEN IST SILBER, REDEN IST GOLD :D

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »darioprogrammiert« (31.05.2015, 19:39)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

01.06.2015, 08:07

Maus-Positionen sind doch super einfach in SFML:
auto position = sf::Mouse::getPosition(deinFenster);
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

8

01.06.2015, 15:30

DANKE! Teste ich gleich mal :D
SCHWEIGEN IST SILBER, REDEN IST GOLD :D

9

01.06.2015, 20:42

Hallo,

ich habe folgenden Code verfasst:

C-/C++-Quelltext

1
2
3
4
CircleShape smiley2(50, 100); // smiley smiley2.setTexture(&günter2); smiley2.move(150,0);
 sf::Vector2f position2=smiley2.getPosition();  while (window.isOpen())    {  while (window.pollEvent(mainevent))        { sf::Vector2i position = sf::Mouse::getPosition(window);         if(position==position2)             std::cout<<"arg";        }
               window.clear(sf::Color::Black);
       window.draw(smiley);    window.draw(smiley2);



Das hat sich jedoch als sinnlos herausgestellt. Leider habe ich es auch nicht geschafft die position auszugeben:

C-/C++-Quelltext

1
 while (window.isOpen())    { while (window.pollEvent(mainevent))        { auto position = sf::Mouse::getPosition(window);std::cout<<position;        }


An die Position komme ich irgendwie nicht heran. was ich bräuchte, wäre ein Vergleich von meinem Element(smiley2) und dem Mauszeiger. Das Bild (circleshape) soll als Button fugieren. Wenn der Nutzer ihn anklickt soll ein Ereignis X eintreten.

Hat da jemand eine Idee? Ich habe die Verwendeung der Mausfunktion irgendwie missverstanden glaube ich. Das hier habe ich gelesen: http://www.sfml-dev.org/tutorials/2.3/window-inputs.php , jedoch hat mir das nicht weitergeholfen!

Über Antworten würde ich mich freuen.
SCHWEIGEN IST SILBER, REDEN IST GOLD :D

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

10

01.06.2015, 21:18

Könntest du den Code nochmal einfügen? Wechsel dazu in den Editor und klick auf Quellcode bei der Eingabe.

Werbeanzeige