Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 21.09.2011, 22:38 Titel: [Buch] 2D-Spieleprogrammierung in FreeBASIC |
|
|
Ich schreibe gerade an einem Buch über 2D-Spieleprogrammierung. Das Projekt ist noch lange nicht fertig; zur Zeit behandelt es
- die Speicherung der Leveldaten
- Steuerung (Tastatur, Joystick, Maus)
- Umgang mit Grafik, Hintergrund, double buffering
- allgemeine Überlegungen zu Spielelementen
Zur Zeit ist ein Kapitel zu AI und Netzwerkaufbau in Arbeit; weitere Kapitel sind in Planung.
Inhaltliche Anregungen werden gern entgegengenommen.
Zur Projektseite: http://www.freebasic-portal.de/projekte/openbook-2d-spieleprogrammierung-59.html _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Westbeam
Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 22.09.2011, 15:42 Titel: |
|
|
Ich habe es jetzt nur kurz überflogen, finde es aber sehr gut gelungen. Aber dennoch habe ich einige Anmerkungen:
Ein Buch, dass das Programmieren von Anfang an nicht beinhaltet ist möglicherweise nicht ganz sinnvoll. Die Leute, die die Grundlagen von FreeBasic auf Freebasic-Portal.de(neben Wikibooks einzige deutsche Anlaufstelle für FreeBasic-Tutorials) gelernt haben werden mit größter Sicherheit auch mit den Tutorials auf der Seite weitermachen und sich nicht dieses Buch direkt danach anschauen. Ich persönlich hasse es, wenn ich ein Tutorial/Buch suche und dann sehe "Für dieses Buch werden Vorkenntnisse gebraucht" und dann muss ich erst wieder ein Tutorial für das Vorwissen suchen, in dem oft auch noch steht, dass hierfür wiedereinmal Vorwissen benötigt wird. Wenn du ein Buch schreibst, dann erwähne bitte auch die Grundlagen. |
|
Nach oben |
|
|
MOD Fleißiger Referenzredakteur
Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 22.09.2011, 16:15 Titel: |
|
|
Dieses Buch behandelt Spieleprogrammierung, nicht die Grundlagen der Sprache. Es richtet sich also an Leute, die mit FB angefangen haben und jetzt Spiele erstellen möchten. Die Vorkenntnisse beziehen sich also auf Dinge wie das Wissen um IFs und SELECT CASEs. Alles andere wird sehr gut beschrieben, sodass man kein Profi sein muss.
Ein reines Grundlagenbuch wäre schon deutlich aufwändiger, FBeginner hat z. B. über 250 Seiten. |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 22.09.2011, 17:49 Titel: |
|
|
So mal ganz grundsätzlich habe ich auch ein Anfängerhandbuch geplant, aber das steht noch ziemlich in den Sternen. Wie MOD schon geschrieben hat: allein die Grundlagen nehmen ungemein viel Platz in Anspruch. Wenn ich im Buch vollständig bei Null anfange, dann werde ich zur Spieleprogrammierung nicht mehr kommen. Auf der anderen Seite ist es für jemanden, der die Grundstrukturen der Sprache schon kennt und der sich jetzt an sein erstes Spiel wagen will, ziemlich mühsam, sich seitenweise durch die Unterschiede verschiedener Datentypen und die Funktionsweise einer Schleife zu kämpfen, die er schon lange kennt - und wenn er dann zu großzügig überfliegt, überliest er wahrscheinlich die wirklich wichtigen Stellen.
Deswegen denke ich, ist es geschickter, ein Buch entweder zu den kompletten Grundlagen oder zu fortschrittlicheren Techniken zu schreiben. Oder meinetwegen einen Mehrbänder, aber das ist eine Frage der zur Verfügung stehenden Zeit. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 09.10.2011, 22:09 Titel: |
|
|
Update 09.10.11 (tolles Datum )
Ich habe ein Kapitel über Programmierung eines Minensuchspiels (ähnlich "Minesweeper") hinzugefügt, sowie ein Kapitel zum Einsatz von Threads.
Mein Wissen über Multithreading ist nur angelesen, deswegen bin ich für Expertenmeinungen sehr dankbar _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 09.10.2011, 22:44 Titel: |
|
|
http://www.freebasic-portal.de/porticula/7-1-zeitsteuerung-in-einem-thread-1377.html
3. zeile von unten: terminate = 1 ... muss ebenfalls mit einem mutexlock/unlock geschützt werden, da auf die variable von 2 threads aus zugegriffen wird.
selber code:
mutex = MUTEXCREATE ... sollte vor dem threadcreate erfolgen, da es sonst mit einem mutex=0 gefüllt und im thread daruf zugegriffen werden könnte (und damit ein ungeschützter zugriff auf gemeinsame resourcen) statfindet.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 09.10.2011, 23:19 Titel: |
|
|
Oh ja, das ungeschützte "terminate = 1" ist mir durchgerutscht
Danke schön! _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 18.10.2011, 12:10 Titel: |
|
|
Update 17.10.11
Inzwischen hinzugekommen sind Kapitel zur Einbindung externer Bibliotheken, insb. für Musik/Sound und Rotation/Skalierung, sowie zu erweiterten grafischen Möglichkeiten wie animierte Objekte, Scrolling und Parallax Scrolling. Außerdem habe ich am Ende des ersten großen Abschnitts eine einfache Umsetzung von Minesweeper beigelegt. Es fehlt jetzt noch eine Abhandlung zur Kollisionskontrolle, dann bin ich soweit fertig.
Wo ich noch Hilfe brauchen würde:
Es geht im nächsten Schritt um die Erstellung eines guten Index. Wenn euch also Schlüsselwörter einfallen, nach denen ihr normalerweise suchen würdet und die bisher nicht im (noch mageren) Index auftauchen, würde es mich freuen, wenn ihr sie mir mitteilt.
Rechtschreib- und Grammatikfehler unterliegen dem urheberrechtlichen Schutz; also bitte solche Fehler an mich zurückleiten. Auch sonst freue ich mich über Anregungen und Verbesserungsvorschläge. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 17.11.2011, 23:53 Titel: |
|
|
Update 17.11.11
Der erste Korrekturlauf ist abgeschlossen; der größte Teil der Rechtschreib- und Grammatikfehler sollte beseitigt sein. Als nächstes folgt eine Korrektur bzgl. Wiederholungen, Aufbaulogik usw. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
isiprimax
Anmeldungsdatum: 02.01.2009 Beiträge: 77
|
Verfasst am: 19.11.2011, 07:02 Titel: |
|
|
Find ich eine richtig tolle Arbeit, die du da machst. MEHR sag ich da nur. Vllt gibt ja irgendwann sogar ein openb3d Kapitel |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 19.11.2011, 10:12 Titel: |
|
|
Danke für das Lob!
isiprimax hat Folgendes geschrieben: | Vllt gibt ja irgendwann sogar ein openb3d Kapitel |
Von mir sicher nicht aber da es sich um eine offene Lizenz handelt, spricht nichts dagegen, wenn jemand eine Erweiterung dazu schreiben möchte. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 20.11.2011, 07:11 Titel: |
|
|
@Nemored.
Du solltest auf seite 75/76 noch angeben, das Portnummern unter 1024 generell Registriert sind. Sie sollten nicht verwendet werden, da sie schon für andere Server vergeben wurden. ( http://de.wikipedia.org/wiki/Port_(Protokoll) )
Ideal ist also eine Portnummer die über 1023 liegt.
Auserdem sollte noch erwähnt werden, das Port's unter 1024 Root-rechte auf Linux benötigt (eventuell auch auf neueren Win-Versionen (aber da will ich mich nicht festlegen))
Das mit der "10" hinter der Portnummer ist auch nicht ganz richtig beschreiben.
10 Gibt hier an, das 10 Anfragen zur gleichen zeit gespeichert werden können.
Das heist nicht, das maximal 10 verbindungen gleichzeitig möglich sind.
Der unterschied ist folgender.
Wenn ein Server eine Anfrage bekommt, dann muss das via NewConnection verarbeitet werden. Erst wenn TSNE_Create_Accept aufgerufen wurde, ist die anfrage akzeptiert.
Sollten jedoch vor dem aufruf dieser accept noch weiter 12 Anfragen eingeben, dann befinden sich jetzt normalerweise 1 + 12 = 13 anfragen im speicher, welche nacheinander (und nicht parallel) von der newconnection aufgerufen werden.
Da die begrenzung jedoch auf 10 steht, heist das, das die letzten 3 verbindungsanfragen automatisch ignoriert werden.
Diese angabe begrenzt jedoch nicht die maximale Anzahl gleichzeitiger erzeugter verbindungen. Wenn jede sek. eine verbindungsanfrage enigeht, und der server nur 1/2sek. pro annahme benötigt, dann kann theoretisch maximal 65535 verbindungen angenommen werden.
Hoffe, ich habs nicht zu kompliziert erklärt
Du gibst auch an, das bei verwendung der EmpfängerID 0 die Daten automatisch an alle Clienten verschickt werden. Das ist auch nicht der fall bei TSNE.
Die Angabe von 0 funktioniert nur bei TSNE_Play, das im grunde auf die 0 nur damit reagiert, das der server die daten empfängt und merkt das eien 0 als empfänger eingetragen wurde. Dadurch sendet er die daten nicht an den eigetnlichen empfänger sondern an alle, indem es alle clienten die mit dem server verbunden sind aufruft und die daten verschickt.
habe das gefühl das du TSNE und TSNE_Play miteinander vermischt.
INDEX-Seite: n -> "nebenlaufige Programme" warscheinlich ä statt a
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 20.11.2011, 17:50 Titel: |
|
|
Danke für die Hinweise, ich habe das gleich mal eingebaut.
Zitat: | habe das gefühl das du TSNE und TSNE_Play miteinander vermischt |
Da hat dich dein Gefühl leider nicht getäuscht ...
Zitat: | INDEX-Seite: n -> "nebenlaufige Programme" warscheinlich ä statt a |
pdflateX macht zwar bei Unicode-Verwendung (kleine) Probleme (die Umlaute werden aus zwei Zeichen zusammengesetzt und lassen sich dadurch nicht mehr so schön herauskopieren), weshalb ich doch lieber die LaTeX-Schreibweise hernehme - makeindex kann aber mit dieser Schreibweise offenbar nicht umgehen, stellt dafür die Unicode-Eingabe richtig dar. Saublöd, sowas
Ich habe es ausgebessert, danke schön. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 22.11.2011, 21:13 Titel: |
|
|
Probiers mal mit XeTeX, das sollte auch die Typographieprobleme bei den Codebeispielen bessern. (XeTeX geht imho mit Schriftarten besser um und hat afaik keine Unicodeprobleme) |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 22.11.2011, 23:05 Titel: |
|
|
xelatex habe ich jetzt zum Laufen gebracht (und das macht wirklich einen guten Eindruck), aber die Unicode-Umlaute werfen jetzt noch andere Probleme auf - z. B. kann latex2html mit ihnen überhaupt nicht umgehen (und htlatex bricht bei mir immer schon nach etwa 15 Seiten ab, weil ihm angeblich der Speicher ausgeht ...) Habe also leider nicht viel gewonnen.
edit: Scheinbar tritt das Umlaut-Problem unter pdftex auch nur gelegentlich auf; gerade eben hatte ich gar keine Probleme. Vielleicht war das auch ein früherer Bug, der bereits behoben ist. Ist aber egal, weil ich die Sonderzeichen-Maskierung für die HTML-Umwandlung sowieso brauche. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 13.12.2011, 22:11 Titel: |
|
|
Update 13.12.11
Das Buch wurde noch einmal komplett auf Rechtschreib- und Grammatikfehler überarbeitet. Offen ist immer noch der Index; ich freue mich weiterhin über diesbezügliche Vorschläge. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Kernelpanic
Anmeldungsdatum: 25.01.2012 Beiträge: 16
|
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 14.02.2012, 23:16 Titel: |
|
|
Update 12.02.12
Ich wurde darauf aufmerksam gemacht, dass ein im Buch auftauchender Link nicht mehr funktioniert - offenbar gab es im englischen Forum eine Umsortierung der Thread-Nummerierung. Wie auch immer, der Link wurde korrigiert. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 30.06.2012, 16:36 Titel: |
|
|
Update 30.06.12
Neben der Behebung eines Fehlers in der Highscore-Bestimmung sind zwei Abschnitte dazu gekommen - einmal eine Erläuterung zur Sprachbibliothek mdLanguage (wer wider Erwarten Probleme mit der Bibliothek hat, kann ja mal ins Buch schauen ), zweitens ein Kapitel zum Abruf von Online-Inhalten. Unter anderem ist da ein Programm dabei, mit dem ihr die aktuelle Version des Buches ermitteln könnt.
Die Nummerierung der Quellcodes auf der Projektseite hat sich durch das neue Kapitel etwas verschoben; ich will das aber im Augenblick noch nicht anpassen, weil ein weiteres Kapitel in Arbeit ist und ich dann die Verschiebung nicht gleich wieder vornehmen möchte. Dementsprechend wird es auch etwas dauern, bis die neuen Quellcodes in die Projektseite wandern. Sie lassen sich jetzt jedoch, dank verbesserter Formatierung, recht leicht aus der PDF-Datei herauskopieren. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 24.08.2013, 17:11 Titel: |
|
|
Nach über einem Jahr gibt es wieder ein paar Neuerungen.
Update 24.08.13
Es kamen zwei neue Kapitel dazu, einmal zum Thema Geschwindigkeitsmessung und Optimierung, zum anderen eine kurze Einführung zum Einbinden von Lua (entspricht weitgehend dem Tutorial im Portal, bzw. umgekehrt). Die in der Projektvorstellung verknüpften Quelltexte befinden sich wieder auf dem aktuellen Stand. An der nicht immer korrekten Sortierung der Quelltexte lässt sich leider zur Zeit noch nichts ändern. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
|