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!

Suchergebnisse

Suchergebnisse 1-20 von insgesamt 693.

Werbeanzeige

02.06.2023, 10:29

Forenbeitrag von: »Helmut«

Stilllegung des Forums (Goodbye ...)

Schade, aber verständlich. Ich hatte eine schöne Zeit im Forum, aber war in letzter Zeit ja auch kaum noch anwesend. Wünsche euch auch noch alles Gute. Vielleicht sieht man ja noch wen auf andere Art

26.10.2016, 09:50

Forenbeitrag von: »Helmut«

GDIPlus

Gehe ich richtig der Annahme, dass du den Splashscreen von einer geladenen DLL innerhalb DllMain anzeigst? Davon würde ich sehr abraten. In der Doku steht auch, dass die Funktion nicht von DllMain aufgerufen werden darf. Das kann schnell zu Deadlocks führen, potentiell erst in späteren Windowsversionen. Außerdem kannst du nicht garantieren, dass deine DLL als erstes geladen wird. Als Alternative würde ich vorschlagen, dass du eine eigene exe für den Splashscreen baust. Die exe zeigt den Splashsc...

31.08.2016, 15:54

Forenbeitrag von: »Helmut«

C++ - Gute Verwendung des Schlüsselwortes 'auto'

Ich bin da auf buggypixels Seite. Ob ich beispielsweise auto istLeer = <komplizierterAusdruck>; oder das selbe mit bool statt auto schreibe macht vom Schreibaufwand keinen Unterschied. Aber die Variante mit bool ist etwas typsicherer und lesbarar. Klar kann man das auch vom Namen her erahnen, aber manchmal möchte man es halt auch genau wissen (bool, BOOL oder int). Oder man will eine Datenstruktur bezüglich Alignment oder Größe begutachten. Da spielen die Namen keine Rolle und man schaut automat...

20.05.2016, 11:49

Forenbeitrag von: »Helmut«

GC - Fluch oder Segen

Zitat von »Chromanoid« Zitat von »BlueCobold« Das Ergebnis sind OutOfMemory-Probleme. Solches null-Setzen ist aber an sich auch kein schöner Stil. Nur leider in der Praxis unvermeidbar. Genauso, wie ein GC.collect/flush eben auch in gewissen Situationen unbedingt notwendig ist, so grauenvoll das auch weh tut solchen Code zu sehen oder selbst schreiben zu müssen. Ich kenne dieses Vorgehen so aus der Praxis nicht. Die Probleme gibt es aber. Meistens läuft es sogar darauf hinaus, dass man effektiv...

12.07.2015, 12:49

Forenbeitrag von: »Helmut«

boost::thread funktion mit funktionszeiger als argument

Das Framework vom BlobbyVolley Contest, das ich geschrieben habe, implementiert genau das, was du hier scheinbar tun willst. Der Code ist auch recht einfach gehalten. Es wird die eine KI auf dem Mainthread ausgeführt und die andere in einem Workerthread, wobei der Thread nur am Anfang gestartet wird und nicht immer wieder neu.

02.04.2015, 14:09

Forenbeitrag von: »Helmut«

Frage zu delete[]

Naja, dann musst du aus deiner ganzen Funktion ja ein template machen.

02.04.2015, 13:36

Forenbeitrag von: »Helmut«

Frage zu delete[]

Ein weiterer Vorteil von normalen Arrays (+ Längenangabe) ist, dass man ohne Probleme Subarrays übergeben kann. Und man kann auch statisch gespeicherte Daten übergeben.

01.04.2015, 16:44

Forenbeitrag von: »Helmut«

Frage zu delete[]

1. Es ist nicht viel, aber sowas akkumuliert sich. Man vergisst schnell, dass der Compiler für jede Instantiierung die ganze Klasse neu parsen muss. In jeder cpp Datei. 2. Das mit dem Besitzerverhältnis finde ich auch gut. Aber std::unique_ptr<T> ist einfach viel schwerer zu lesen als T*. 3. Da gibt's wohl viele Gründe. Der häufigste dürfte wohl sein, dass ein benötigter Compiler es noch nicht unterstützt. 4. Es ist nicht viel Aufwand, aber es ist nervig und macht Code unleserlich. Mit normalen ...

01.04.2015, 16:12

Forenbeitrag von: »Helmut«

Frage zu delete[]

(Das ist ja witzig. Das Forum macht aus "schlecht ist" "schlecht isst". Wenn man auf Zitieren klickt sieht man, dass ichs richtig geschrieben hab)

01.04.2015, 16:09

Forenbeitrag von: »Helmut«

Frage zu delete[]

Zitat von »Legend« Also der unique_ptr hat einen Overhead von praktisch oder sogar gleich null? Also gegen den spricht nun wirklich nichts (ausser geteilte Besitzverhältnisse). - Längere Kompilierungszeit - Schwerer lesbar - C++11 Abhängigkeit - ständig muss .get() aufgerufen werden Ich will nicht sagen, dass std::unique_ptr schlecht ist, aber etwas das nur Vorteile hat, scheint es in C++ nicht zu geben

21.03.2015, 17:42

Forenbeitrag von: »Helmut«

#17: "Blobby Volley KI", Spezial

Ups, sorry. Ich hatte die Woche etwas Stress. Ja, Domin hat gewonnen, nochmal herzlichen Glückwunsch Er war mal wieder der einzige, der etwas eingesendet hat und hat somit alle 4 Runden gewonnen. Die 5. Runde muss deshalb nicht ausgetragen werden. Die Konkurrenz war ja außer in der ersten Runde nicht sonderlich groß, trotzdem kann sich seine KI durchaus sehen lassen. Die letzte Version schlägt tatsächlich alle anderen. Alle Einsendungen können hier heruntergeladen werden. Es ist auch eine Exe mi...

09.03.2015, 21:13

Forenbeitrag von: »Helmut«

#17: "Blobby Volley KI", Spezial

So, die dritte Runde ist auch schon rum. Leider hat wieder nur domin was eingesendet. Somit hat er jetzt schon 6 Punkte. Das zu schlagen wird knifflig, ist aber noch möglich. Hier der aktuelle Stand der KIs. Ich habe mal das Contest Framework leicht geändert, um den Einstieg etwas zu erleichtern. Um in der nächsten Runde mitzumachen könnt ihr folgendes tun: - Framework hier runterladen - Das Projekt öffnen (mit CodeLite oder VS) und im Projekt KIs.h öffnen - Die Klasse MyNicknameKI enthält den C...

05.03.2015, 18:18

Forenbeitrag von: »Helmut«

[c++] operator== überladen

Mach's doch einfach so wie im Code vom aktuellen Contest: 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 //Basisklasse für Spieler und Bälle class GameObject { public: int xPos, yPos;//Position int xVel, yVel;//Geschwindigkeit. X-Komponente wird für Player nicht benutzt public: GameObject(); GameObject(int xPos, int yPos); bool operator==(const GameObject& rhs) const; bool CollidesWith(const GameObject& Other, int R...

03.03.2015, 21:47

Forenbeitrag von: »Helmut«

#17: "Blobby Volley KI", Spezial

Also ich habe gerade innerhalb maximal einer Stunde oder so eine komplett neue KI auf Basis des Angsthasen geschrieben und LetsGo (die aktuell beste KI) kann sie bereits schlagen. Ihr könnt auch einfach LetsGo's KI nehmen und ein paar Konstanten ändern, bis sie besser ist Das ist alles eigentlich nicht so ein großer Zeitaufwand.

03.03.2015, 01:59

Forenbeitrag von: »Helmut«

#17: "Blobby Volley KI", Spezial

So, am besten ladet ihr das Framework hier nochmal neu runter, es gibt einige Änderungen: - Es steht nur noch 1% der bisherigen Rechenzeit zur Verfügung. - Das Netz ist etwas schmaler. Jetzt ist die Position des Spielers immer zwischen -10000 und -1000. Das vereinfacht vielleicht die KI Entwicklung in gewissen Situationen. - Es wird gespielt, bis ein Spieler 15 Punkte mehr hat als der andere, oder bis einer 150 Punkte erreicht. Würde man die bisherigen KIs unter solchen Bedingungen laufen lassen...

02.03.2015, 02:07

Forenbeitrag von: »Helmut«

#17: "Blobby Volley KI", Spezial

Die zweite Runde ist auch schon vorbei. Es gab leider nur eine Einsendung, nämlich von Domin, sodass er auch die zweite Runde für sich entscheiden kann und jetzt also schon 3 Punkte auf dem Konto hat. Herzlichen Glückwunsch Hier sieht man, wie seine KI mit den bisherigen KIs verglichen abschneidet. Sie schlägt seine alte KI, verliert dafür aber jetzt gegen TGGCs KI. An Davids KI kommt sie auch noch nicht ran. Im Paket ist jetzt auch der Code von Domins und meiner KI drin. Fun fact: Hätte jemand ...

27.02.2015, 14:13

Forenbeitrag von: »Helmut«

#17: "Blobby Volley KI", Spezial

C-/C++-Quelltext 1 2 3 if ((gs.Players[1].LastKeys >> 3) == 7 * 191 && (rand() & 127) == 0) myBestMove ^= K_Jump; return (myBestMove & 7) | (seed << 3); Da bin ich so nett und gebe der KI die Information, wie sich der Gegner im letzten Frame bewegte, und dann wird das so schamlos ausgenutzt Ich werd jetzt aber deswegen nichts am Framework für diese Runde ändern, weil das ganze auch komplett ohne LastKeys möglich wäre.

26.02.2015, 18:42

Forenbeitrag von: »Helmut«

#17: "Blobby Volley KI", Spezial

Zitat von »David Scherfgen« Übrigens, schau mal, wie stark das Ergebnis bei den zufallsbasierten KIs variiert. Bei den Spielen zwischen deiner KI und meiner KI haben wir Ergebnisse (ohne CPU-Faktor) zwischen 15:4 und 15:11 - nur weil jeweils ein anderer Random Seed benutzt wurde. Deine KI ist augenscheinlich noch etwas besser als meine, aber wenn meine jetzt ungefähr auf demselben Niveau wäre, dann müsste man viel weiter als nur bis 15 spielen, um ein aussagekräftiges Ergebnis zu erhalten. Das ...

23.02.2015, 18:03

Forenbeitrag von: »Helmut«

#17: "Blobby Volley KI", Spezial

So, da bin ich wieder Erst mal Gratulation an Domin für der ersten Punkt! Über Nacht sind auch Davids Ergebnisse fertig geworden: Siehe hier. Wie erwartet ist seine KI die beste, ist aber auch beachtlich komplex. Ich blicke da ohne weiteres nicht durch Ich würde empfehlen sie nicht anzufassen und eine andere weiter zu verbessern. Eine gute KI kann definitiv simpler sein. Interessant finde ich übrigens LuggLuggs KI. Er hat die KI bereits Montag abgeschickt, hat den Angsthasen lediglich ein wenig ...

23.02.2015, 01:56

Forenbeitrag von: »Helmut«

#17: "Blobby Volley KI", Spezial

So, die erste Runde ist vorbei und hier sind auch schon die vorläufigen Ergebnisse! Das Paket enthält jetzt auch alle Sourcecodes. Davids Einsendung ist noch nicht in der Auswertung enthalten, weil seine KI etwas langsamer ist und er natürlich auch 7 Versionen einsenden musste Ich werd das über Nacht mal rechnen lassen. So wie es aussieht ist seine KI die Beste (wenn man von meiner absieht), er will aber nur außer Konkurrenz teilnehmen.

Werbeanzeige