Die Suche ergab 236 Treffer

von Helmut
20.02.2015, 12:44
Forum: News und Ankündigungen
Thema: Blobby Volley KI Contest auf spieleprogrammierer.de
Antworten: 8
Zugriffe: 9678

Re: Blobby Volley KI Contest auf spieleprogrammierer.de

Wie wirst du prüfen ob nur 100MB allokiert wurden? Ich breche die Frage auf ein paar cases runter: 1) Meine Klasse macht nichts anderes als einmal bei Konstruktion malloc(1024*1024*100) . OK? 2) Meine Klasse macht nichts anderes als einmal bei Konstruktion void* p = malloc(1024*1024*100) . OK? 3) F...
von Helmut
19.02.2015, 21:45
Forum: News und Ankündigungen
Thema: Blobby Volley KI Contest auf spieleprogrammierer.de
Antworten: 8
Zugriffe: 9678

Blobby Volley KI Contest auf spieleprogrammierer.de

Hallo, wollte euch nur kurz darauf aufmerksam machen, dass ich zur Zeit einen kleinen KI Contest hier veranstalte: https://www.spieleprogrammierer.de/32-programmier-contests/23889-17-blobby-volley-ki-spezial-1-runde-endet-sonntag-22-02-2015-23-59/ Es geht um eine KI für ein einfaches Spiel. Die Beis...
von Helmut
09.02.2015, 15:03
Forum: Allgemeines Talk-Brett
Thema: Jammer-Thread
Antworten: 7527
Zugriffe: 1459984

Re: Jammer-Thread

Ich musste gerade auch die Visual-C++-Runtime doch wieder in eine DLL einbinden, weil diese anscheinend für v-tables benötigt werden. Irgendwie schade, zumal die DLL per Hook in jeden Prozess geladen wird.
von Helmut
16.01.2015, 15:05
Forum: Allgemeines Talk-Brett
Thema: Jammer-Thread
Antworten: 7527
Zugriffe: 1459984

Re: Jammer-Thread

Erstens: WIe groß muss "a certain software company" sein, dass Microsoft durch den Reifen springt. Wenn meine Programme nicht laufen kann ich nicht bei Microsoft anrufen und fordern, dass sie was am Betriebssystem oder Compiler ändern. Ich denke es kommt nicht darauf an, wie groß die Firm...
von Helmut
28.10.2014, 15:31
Forum: Algorithmen und Datenstrukturen
Thema: Referenz auf temporäre Spielobjekte
Antworten: 33
Zugriffe: 19030

Re: Referenz auf temporäre Spielobjekte

Bei Splatter habe ich alle Objekte anhand einer ID in einem Container. Meine Objektreferenz ist dann eine kleine struct { Zeiger* z; ID id; }, die beim Zugriff das aktuelle Objekt aus dem Container holt und den Zeiger vergleicht, ob es noch dasselbe Objekt ist. Ich habe nämlich festgestellt, dass Z...
von Helmut
27.10.2014, 20:29
Forum: Algorithmen und Datenstrukturen
Thema: Referenz auf temporäre Spielobjekte
Antworten: 33
Zugriffe: 19030

Re: Referenz auf temporäre Spielobjekte

@Sternmull Du tust jetzt so, als ob es tausende solcher Pointer gibt, die auch schwer zu finden sind. Ich habe mal gerade in den Source von einen tatsächlichen Spiel geschaut, das den Ansatz verwirklicht, den ich hier vorgestellt habe. Und es gab genau eine Stelle im ganzen Spiel, in dem ein Objekt ...
von Helmut
27.10.2014, 16:15
Forum: Algorithmen und Datenstrukturen
Thema: Referenz auf temporäre Spielobjekte
Antworten: 33
Zugriffe: 19030

Re: Referenz auf temporäre Spielobjekte

Moment, was genau heißt das? Wie kann ein shared_ptr denn auf mehr als eine Instanz zeigen? Oder meinst du, dass alle shared_ptr die auf ein Objekt zeigen, jeweils eine eigene kleine Heapallokation machen? Wofür wäre die? Seine Aussage ist nicht allgemeingültig. Ein "shared_ptr" besteht a...
von Helmut
27.10.2014, 14:38
Forum: Allgemeines Talk-Brett
Thema: Jammer-Thread
Antworten: 7527
Zugriffe: 1459984

Re: Jammer-Thread

WM_PAINT wird ja auch nicht gesendet oder gepostet, sondern bei Bedarf direkt in GetMessage generiert. Wofür brauchst du das denn?
von Helmut
26.10.2014, 22:50
Forum: Algorithmen und Datenstrukturen
Thema: Referenz auf temporäre Spielobjekte
Antworten: 33
Zugriffe: 19030

Re: Referenz auf temporäre Spielobjekte

Ein shared_ptr hat den weiteren Nachteil, dass er pro Instanz auf die er zeigt eine kleine Heapallokation machen muss. Auch musst du gut darauf achten, dass keine zirkulären Referenzen entstehen und die Dinger zu debuggen macht auch keinen Spaß. Ich würde dir die Nummer 4 empfehlen: 4. Spielobjekte ...
von Helmut
05.10.2014, 23:00
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: C++ - Verdecken einer virtuellen Funktion
Antworten: 6
Zugriffe: 2199

Re: C++ - Verschatten einer virtuellen Funktion

Das geht nicht. Überladene Funktionen dürfen sich nicht ausschließlich im Rückgabetyp unterscheiden.
Wofür brauchst du das denn?
von Helmut
01.10.2014, 16:05
Forum: Allgemeines Talk-Brett
Thema: Jammer-Thread
Antworten: 7527
Zugriffe: 1459984

Re: Jammer-Thread

Spiele Programmierer hat geschrieben:Du darfst in einer Funktion einfach keine Funktion deklarieren. Aus. Da ist eigentlich nichts unlogisch daran, dass ist einfach so und macht auch Sinn.
Leider darf man das schon... Nur sie dort auch zu definieren ist wenigstens nicht erlaubt.
von Helmut
25.09.2014, 14:07
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: [MSVC 2013] Function local static zero-init
Antworten: 6
Zugriffe: 2855

Re: [MSVC 2013] Function local static zero-init

Nachdem mir Cat nochmal die Grundzüge von zero-init erklärt hat, bin ich momentan bei folgendem Konstrukt: foo() { static std::atomic_flag lock = ATOMIC_FLAG_INIT; // zero-init, keine race-condition while (lock.test_and_set(std::memory_order_acquire)) {} // spin static void* ptr = expensiveInit(); ...
von Helmut
25.09.2014, 13:49
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: [C++] Try/Catch -> Objekt anlegen
Antworten: 25
Zugriffe: 5344

Re: [C++] Try/Catch -> Objekt anlegen

Naja das ist schon ein Problem, das BeRsErKeR da beschreibt. Und es gibt schlicht und einfach keine gute Lösung. Exceptions und konsequentes RAII haben halt nicht nur Vorteile. Meiner Meinung nach sogar mehr Nachteile als Vorteile. Ich würde Exceptions vermeiden, wenn es geht.
von Helmut
11.09.2014, 20:14
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: [C++] SmartPointer
Antworten: 23
Zugriffe: 5069

Re: [C++] SmartPointer

Smart Pointer zu benutzen, nur damit man Smart Pointer benutzt, ist Quatsch. Man kann auch mit Smart Pointern in C++ viel Quatsch machen. Deshalb würd ich dir einfach empfehlen, keine zu benutzen. Mit der Zeit wirst du dann automatisch ein Verständnis dafür bekommen, vielleicht mal selbst einen Smar...
von Helmut
21.08.2014, 17:52
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: [Visual C++] Besseres _malloca()
Antworten: 6
Zugriffe: 2039

Re: [Visual C++] Besseres _malloca()

Das gefällt mir wesentlich besser als _alloca(). Die Funktion sollte meiner Meinung nach verboten werden. Man sollte vielleicht noch erwähnen, dass dein Code nicht mehr funktioniert, sobald TYPE einen Konstruktor hat. Außerdem würde mich ein wenig stören, dass dann auf dem Stack Platz für 2 Pointer ...
von Helmut
09.08.2014, 17:59
Forum: Allgemeines Talk-Brett
Thema: Jammer-Thread
Antworten: 7527
Zugriffe: 1459984

Re: Jammer-Thread

Neuen Monitor angeschlossen und ZACK, Internet funktioniert nicht mehr. Selbst nach stundenlangem Treiber neuinstallieren, neue Netzwerkkarte einbauen und etlichen Neustarts wollte es nicht laufen. Musste schließlich Windows neu installieren.
von Helmut
17.07.2014, 14:23
Forum: Algorithmen und Datenstrukturen
Thema: Scrollen mit Word Wrap
Antworten: 55
Zugriffe: 15493

Re: Scrollen mit Word Wrap

Hm... müsste das nicht doch gehen? Man müsste halt rückwärts suchen, bis man entweder genügend Wörter zusammen hat, um eine Zeile vollzumachen, oder bei längerem Wort als Zeile den ersten möglichen Umbruch findet. Und in letzterem Fall müsste man dann halt das Langwort über Zeilen verteilen und rec...
von Helmut
17.07.2014, 10:43
Forum: Algorithmen und Datenstrukturen
Thema: Scrollen mit Word Wrap
Antworten: 55
Zugriffe: 15493

Re: Scrollen mit Word Wrap

Nun, angenommen du hast eine sehr lange Datei, die so endet: ...xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgggiiiiy Und dein Editor stellt das dar:   _ _ _  |iiiiy|  |     |  |     |  |_ _ _| Was soll nun angezeigt werden, wenn eine Zeile hochgescrollt wird? Es ist unmöglich das zu entscheiden, ohne den gesamten...
von Helmut
16.07.2014, 21:48
Forum: Algorithmen und Datenstrukturen
Thema: Scrollen mit Word Wrap
Antworten: 55
Zugriffe: 15493

Re: Scrollen mit Word Wrap

Aber das ist noch nicht das Ende. Das war jetzt Scrollen nach unten . Der Benutzer kann auch hoch scrollen – und dann läuft die verdammte Chose rückwärts ab! Also wird der Quelltext erneut kopiert, und die dritte Version formatiert von hinten nach vorne. Macht genau das Gleiche, aber der Quelltext ...
von Helmut
28.06.2014, 11:18
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: [Win32]PeekMessage und MsgProc
Antworten: 9
Zugriffe: 2242

Re: [Win32]PeekMessage und MsgProc

SendMessage umgeht in bestimmten Fällen die Nachrichtenschleife und ruft direkt die Windowsprozedur auf. Zum Beispiel in dem Fall, wenn DefWindowProc WM_CLOSE bearbeitet und über DestroyWindow WM_DESTROY sendet. Wenn du Nachrichten von einem Fenster abfangen willst kannst du z.B. SetWindowSubclass v...
von Helmut
17.05.2014, 18:59
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: Effiziente Synchronisation von Threads
Antworten: 34
Zugriffe: 5743

Re: Effiziente Synchronisation von Threads

Ja, man sollte wohl wirklich aus dem bool ein std::atomic<bool> machen. Aber solange man Visual Studio verwendet reicht auch volatile.
Gibt's zu Win32 Events eigentlich auch ein Pendant in der Standard Bibliothek?
von Helmut
17.05.2014, 14:42
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: Effiziente Synchronisation von Threads
Antworten: 34
Zugriffe: 5743

Re: Effiziente Synchronisation von Threads

Kein Problem.
Allerdings solltest du noch die ersten beiden Zeilen in WaitForAllThreads() vertauschen, um ne Racecondition beim Zugriff auf TestRunning1 zu vermeiden. Du solltest vielleicht auch noch TestRunning1 volatile markieren, damit der Compiler das nicht selber vertauscht.
von Helmut
17.05.2014, 10:28
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: Effiziente Synchronisation von Threads
Antworten: 34
Zugriffe: 5743

Re: Effiziente Synchronisation von Threads

Ups, da war noch 'ne kleine Racecondition drin. Hier korrigiert: HANDLE TestEvent1, TestEvent2; bool TestRunning1 = false; std::atomic<int> ThreadCounter = 0; void WaitForAllThreads() { HANDLE NextEvent = TestRunning1 ? TestEvent2 : TestEvent1; if (ThreadCounter.fetch_add(1) == THREADCOUNT - 1) { Th...
von Helmut
17.05.2014, 10:18
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: Effiziente Synchronisation von Threads
Antworten: 34
Zugriffe: 5743

Re: Effiziente Synchronisation von Threads

Dass ist nett, dass du ein minimales Beispiel gemacht hast. Du brauchst allerdings mindestens zwei Events. Die Racecondition hast du ja schon selber erkannt. Ohne Mainthread ist das etwas tricky, aber es geht so: HANDLE TestEvent1, TestEvent2; bool TestRunning1 = false; std::atomic<int> ThreadCounte...
von Helmut
16.05.2014, 20:09
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: Effiziente Synchronisation von Threads
Antworten: 34
Zugriffe: 5743

Re: Effiziente Synchronisation von Threads

Der Mainthread kann dann über ein zweites Event wieder alle Threads aufwecken. Wenn ich es so mache, wie schlafen sie? Auf ein Event wartest du mit WaitForSingleObject. Die Funktion habe ich ja auch schon erwähnt. Warum SuspendThread böse ist kannst du hier nachlesen. Und dass busy wait nicht perfo...
von Helmut
16.05.2014, 16:32
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: Effiziente Synchronisation von Threads
Antworten: 34
Zugriffe: 5743

Re: Effiziente Synchronisation von Threads

Versteh ich das richtig, dass alle Workerthreads gleichzeitig anfangen zu arbeiten und der Mainthread darauf wartet dass alle fertig werden und dann wieder alle Workerthreads mit was neuem anfangen? Die einfachste Lösung wäre dann tatsächlich WaitForMultipleObjects. Dann musst du die Threads aber fü...
von Helmut
16.05.2014, 14:15
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: Effiziente Synchronisation von Threads
Antworten: 34
Zugriffe: 5743

Re: Effiziente Synchronisation von Threads

ResumeThread() und SuspendThread() sind nicht zur Synchronisierung gedacht und sollten auch nicht dafür verwendet werden. Warum nutzt du nicht einfach CriticalSections? Wenn die zu langsam werden gibt es noch andere Tricks, aber erstmal sollte man die verwenden. Auch verstehe ich wie Schrompf deinen...
von Helmut
26.02.2014, 01:11
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: [gelöst]Verdammtes std::list::erase des letzten Elementes
Antworten: 13
Zugriffe: 2811

Re: [gelöst]Verdammtes std::list::erase des letzten Elemente

@joggel
Bei deiner Variante wird "eineBedingung" nicht für jedes Element der Liste aufgerufen, falls ein Element mitten in der Liste gelöscht wird.
von Helmut
25.02.2014, 21:22
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: [gelöst]Verdammtes std::list::erase des letzten Elementes
Antworten: 13
Zugriffe: 2811

Re: Verdammtest std::list::erase des letzten Elementes

Das mit dem Rückwärtsiterieren ist ne gute Idee, werd ich mir merken!
von Helmut
18.02.2014, 20:26
Forum: Programmiersprachen, Quelltext und Bibliotheken
Thema: Funktionen weiterleiten ohne die Parameter zu kennenn
Antworten: 9
Zugriffe: 1879

Re: Funktionen weiterleiten ohne die Parameter zu kennenn

Es ist nicht nur eine Sprunganweisung. Die Funktion muss erst die Funktion aus der richtigen DLL laden, falls das nicht schon geschehen ist. Außerdem hab ich keine Ahnung, wie man Assemblercode einbindet, aufruft, wie das in Kombination mit Makros funktioniert und wie man da globale Variablen anlegt...