Server Client Verbindung bei Videospielen

Als ich das erste mal versucht habe eine Kommunikation zwischen einem Client und einem Server herzustellen war ich erstmal ratlos.
Wie versende ich etwas, was über Text hinaus geht? Wie versende ich Objekte über die Socket-Verbindung? Meine Idee war simpel aber kaum realisierbar:
Ich wandle alle wichtige Daten in Text um, um sie danach – wenn sie beim Server bzw. beim anderen Client ankommen – einfach wieder zurück in neue Objekte. Also habe ich mir ein kleines Protokoll ausgedacht, mit dem ich die einzelnen Daten versende. Ja es hat funktioniert und ja ich habe das tatsächlich kurze Zeit benutzt. Dann wollte ich ein neues Feature einbauen, einzelne Personen sollten neue Attribute erhalten und das ganze zu parsen, um es dann in ein neues Objekt zu konvertieren war echt eklig. Naja also habe ich mal ganz stumpf gesucht, wie man Objekte über Javasockets senden kann und dank StackOverflow habe ich eine wirklich skuril einfache Möglichkeit für mein Problem gefunden: ObjectOutputStream / ObjectInputStream.
Das ist so einfach, da bin ich echt nicht drauf gekommen. Über diese beiden Klassen kann man einfach Objekte über die Socketverbindung senden und empfangen.
Der Clou ist, dass man dadurch ein Object gewinnt. Wer sich ein bisschen mit Java auskennt, der weiß, dass normalerweise alle Objekte, die man selbst programmiert die Oberklasse Object haben. Im Umkehrschluss kann man dann also prüfen, ob dieses eher abstrakte Objekt eine Instanz des näher definierten Objekts ist, was man selbst programmiert hat. Das geht mittles dem Vergleichsoperator instanceof, der dann wiederum true oder false zurück gibt.
Wenn bei dieser Prüfung, ob das Object eine Instanz unseres gesuchten Objekts ist, dann kann man es einfach mit den Klammern casten.
Aus Object wird dann beispielsweise Gegner:

Gegner gegner = (Gegner) ois.getElementAt(i); //objectinputstream aka ois

Ich muss sagen, dass das eigentlich super einfach gewesen wäre, hätte ich mal vorher mehr geplant. Leider passiert es mir noch sehr häufig, dass ich denke schon sehr viel geplant zu haben, letzten Endes wirkt es dann aber so, als hätte ich nichts geplant.
Kennt ihr ähnliche Funktionen in anderen Programmiersprachen? Schreibt mir das gerne in die Kommentare!

Dungeon crawler und deren Maps

Wie einige wissen werden, programmiere ich gerade einen Dungeon crawler, abgestimmt für ein LAN-Party Event. Damit ein Dungeon crawler nicht langweilig wird, braucht man natürlich eine große Map – und mit einer großen Map, meine ich eine unendlich große Map. Dieses Konzept von unendlich großen Maps wollten andere Spieleentwickler ja auch schon verwirklichen (z.B. No Man’s Sky), jedoch ist es bei vielen auch geflopt (z.B. No Man’s Sky).

Ich befinde mich, um ehrlich zu sein, aber auch in einer Position, in der es sich leicht lästern lässt, da mein Konzept von einer „unendlich großen Map“ dagegen sehr simpel ist. Anstatt einer wirklich riesigen Map, bei der alles gespeichert wird, was jemals geladen wurde, wird bei mir (voraussichtlich) immer nur der vorherige Raum gespeichert. Kennt ihr die Elder Scrolls Reihe? Ich meine mal gelesen zu haben, dass in einem der ersten Teile ein sehr ähnliches Prinzip verwendet wurde, nur in wirklich sehr lustig:
Betrat man nämlich einen neuen Raum über eine Tür und verlässt den gleichen Raum durch die gleiche Tür wieder, steht man nicht – wie man erwartet hätte – im alten Raum, sondern ein neuer wurde generiert.
So ähnlich möchte ich das auch realisieren!

Umsetzung im Projekt

Das klingt ja alles ganz einfach! Im Prinzip ist es das eigentlich auch. Dadurch, dass bei Aufs Maul alles, was mit der Welt und dem Spieler zu tun hat, serverseitig geregelt wird, muss am Anfang eines neuen Raums dieser einmal generiert werden und an alle Clients geschickt werden. Am einfachsten ist es einen byteStream zu öffnen, der dem Client das BufferedImage mit der Map  übermittelt.
Bevor man die Map jedoch an den Client übermittelt muss sie erst einmal generiert werden. Dazu gehören nicht nur 4 Wände und ein Ausgang, sondern auch Truhen und Gegner – ansonsten wird es wohl auf Dauer sehr unlustig. Aber am Anfang sind nur die Räume wichtig, denn das System an sich sollte erst einmal stehen, bevor man sich um die Einzelheiten kümmert. Falls jedoch das ausliefern der Map an den Client funktioniert, sollte man sich überlegen, wie man den „Inhalt“ einer Map hinzufügt. Ich würde es wahrscheinlich mit der gleichen Methode machen – der Server wandelt das Objekt (hier also beispielsweise der Gegner oder die Truhe) in bytes um und der Client wandelt es wieder zurück. Dadurch erspart man sich viele Frickelein und wahrscheinlich auch viel traffic – dafür verbraucht das ganze ein bisschen Rechenleistung des Servers und des Clients. Aber das ist es mir wert, auch weil es nur am Anfang einer neuen Map ist.

Habt ihr schon einmal ein Spiel programmiert, das immer wieder neue Maps generieren musste? Schreibt das gerne in die Kommentare!

 

Menüs in Videospielen

In meinem letzten Beitrag habe ich über die Planung größerer Projekte geschrieben. Als Beispiel hat dabei mein eigenes Projekt gedient, welches ein LAN-Party Spiel werden soll. Ich habe in der Zwischenzeit ein bisschen weiterprogrammiert und habe mir ein kleines Konzept überlegt, wie ich eigentlich mit den einzelnen Fenstern und Menüs in Videospielen umgehen möchte. Ich programmiere übrigens immer noch in Java (und immer noch ohne externe Spielelibrary wie Slick2D o.ä.).

Als erstes soll das Spiel natürlich nicht einfach starten, denn das wäre ja doof. Ein richtiges Spiel hat einen Client oder zumindest einen Launcher. Man kennt das von Spielen wie League of Legends oder auch Counter Strike. Alle haben entweder einen Launcher oder ein Hauptmenü, in dem man sich Spielmodi aussuchen kann. Das sollte mein Spiel mit dem tollen Namen „Aufs Maul“ natürlich auch bekommen!

Also habe ich mich mal hingesetzt und mir überlegt, was in so einen Launcher eigentlich erst einmal rein sollte. Da habe ich an Folgendes gedacht:

  • Einstellungen
  • Spielmodi
  • Servereinstellungen (IP & Port)
  • Charakterdesign

Genau das habe ich dann in den Client einfließen lassen. Auch wenn momentan erst Einstellungen und Servereinstellungen verewigt wurden, finde ich den Fortschritt ganz cool, den ich bis jetzt habe.

Ich habe mir auch überlegt, wie genau ich es überhaupt realisieren will, dass sich der Client schließt und das Spiel an sich öffnet. Letzten Endes habe ich das über einen kleinen Zustandsautomaten geregelt (Informatikunterricht hat sich gelohnt). Das was wir eigentlich gelernt haben, um formale Sprachen zu erkennen, konnte ich hier sehr gut anbringen, da ich über statische int Werte neue Zustände gesetzt habe.

Codeauszug der Main-Klasse

switch (gameState) {
 case 0:
  mw = new MainWindow("Aufs Maul - Client");
  break;
 case 1:
  mw.setVisible(false);
  gf = new GameFrame("Aufs Maul");
  con = new ConnectionManager(ip, port);
  gameState = 2;
  break;
 case 2:
  conAndFrame();
  break;
 case 99:
  ErrorWindow ew = new ErrorWindow("Aufs Maul - Something went terribly  wrong");
  break;
}

Das ist, wie ich das ganze handle. Eigentlich nicht so schwer. Am Anfang (gameState = 0) wird der Client deklariert, dann wird irgendwann das Spiel gestartet (gf = new GameFrame(…) ) und im dritten Zustand wird die Verbindung und das Bild immer aufgefrischt.
Also eigentlich nichts kompliziertes!

Habt ihr schon mal einen Client für ein Spiel geschrieben? Worauf achtet ihr bei solchen Projekten? Ich persönlich drücke mich momentan wirklich so lange es geht vor der Grafik – aber auch das wird noch!

Ein großes Projekt starten – how?

Wie starte ich ein großes Projekt? Ein Projekt, das nicht in ein paar Tagen fertig gestellt werden kann, sondern wirklich viele Tagen/Wochen Arbeit frisst?
Ich habe mir die gleiche Frage gestellt und bin – mangels Erfahrung – auch zuerst an meine Grenzen gestoßen. Vor ein paar Wochen habe ich den Blog Beitrag über ein Spiel veröffentlicht, welches ich für LAN-Partys programmieren wollte. Das ganze bleibt, ich habe viele Pläne und Gedanken im Kopf, die ich unbedingt einbringen möchte – das motiviert mich immer. Das Problem ist, wenn ich anfange zu programmieren und mir vorher keine Gedanken aufgeschrieben habe, scheitere ich spätestens, wenn ich nach ein paar Tagen das Projekt anfasse und vorher nichts mehr gemacht habe. Alle Gedanken sind weg und was ich da in Zeile 45 gemeint habe? Keine Ahnung!

Planung, Planung, Planung

Ja es klingt dumm, das hier zu erwähnen, denn eigentlich ist es klar. Aber ich persönlich habe diese Planungszeit nie ernst genommen und muss das lernen, bzw. lerne das nun, indem ich wirklich Wochen lang vorher plane.
Ich meine damit übrigens nicht nur: Welche Programmiersprache nutze ich, welche IDE, welches Gerät; Ich meine vor allem auch Sachen wie agile Programmierung, Softwaremuster etc. Das bedeutet: Mit welcher Zeitplanung und mit welchen Klassen werde ich arbeiten. Dafür ist eine einfache Textdatei schon hilfreich:

  • Java als Programmiersprache
  • MVC – Model-View-Controller (?)
  • Client soll möglichst plattformunabhängig sein
  • Server – Client Verbindung soll als erstes stehen
    • Wie (mit welchem Protokoll) soll kommuniziert werden?
    • Wie machen das andere Spiele?
  •  Grafische Darstellung der Map – einfache Grafiken, die Hitboxen gleichen
  • Alle Spieler sollen von der gleichen Klasse erben
    • Standardvariablen wie Health, Money (etc) sollen alle haben
  • Später möglichst noch NPCs einfügen

Das waren nun meine ersten Gedanken. Vielleicht erkennt man ein leichtes Muster. Java beispielsweise nutze ich hier, weil ich Java momentan einfach gut kann. Es hat Macken und ist vielleicht nicht perfekt für das Spieleprogrammieren gemacht – aber es läuft und es soll nur ein LAN-Party Spiel werden. Das Protokoll macht mir ein bisschen Sorgen, aber hey, das plane ich dann eben noch mehr.
Wie man momentan sieht, habe ich noch keinen konkreten Inhalt für das Spiel. Das erklärt sich dadurch, dass das die grundlegende Planung ist. Momentan sollte es noch egal sein, ob es ein Spiel in Vogelperspektive oder Seitenansicht wird. Das kommt noch später.

Ein neues Projekt starten

Wenn man dann mal mit der Planung fertig ist und vor dem leeren Projekt sitzt (egal welche IDE), dann kennen es manche vielleicht, dass man plötzlich unmotiviert wird. Das hatte ich auch oft – mittlerweile zwinge ich mich dann einfach zu den ersten Zeilen und der Spaß kommt dann allein.
Wenn man dann die ersten Zeilen schreibt, sollte man auf keinen Fall vergessen, was man sich vorher für einen tollen Plan zusammengestellt hat. Manchmal muss man sich dann eben zurückhalten eine Klasse noch ganz weit zu programmieren, denn eine andere Aufgabe ist dann einfach wichtiger. Also: an den Plan halten! Auch das wirkt total logisch, aber man muss sich das wirklich im Kopf behalten. Am besten man hat den Plan immer auf einem Workspace rumliegen um immer mal wieder drauf zu sehen, dann kann man schon mal nicht mehr einfach so davon abweichen.
Ist man mit der Liste durch, dann wird getestet. Klappt alles? Dann sehr gut, es kann ab jetzt weitergedacht werden. Was steht nun an? Inhalt füllen? Das Spielkonzept weiter ausarbeiten? Da sind keine Grenzen gesetzt, aber auch hier: In der Ruhe liegt die Kraft! Keine allzu großen Schritte, falls es nicht einfach so schnell geht. Wenn man an einem großen Schritt scheitert kann das wirklich schmerzhaft sein – nicht nur wegen der Projektstruktur, sondern auch wegen der Motivation.

Wie plant ihr eure Projekte? Legt ihr euch für jedes Projekt eine Planung an? Wie lange plant ihr eure Projekte? Schreibt mir das gerne in die Kommentare!

Eine neue Sprache lernen – russisch

Letztens habe ich ein Video von THINKR gesehen. Darin ging es um Sprachen und deren Hintergründe. Lernt man eine Sprache, so fängt man an die Kultur dahinter zu verstehen. Aus der Schule kenne ich es, Sprachen zu lernen, jedoch fand ich die Mittel, mit denen eine neue Sprache vermittelt werden sollte, nie erfolgreich. Ich musste Latein und Englisch lernen, immerhin englisch lerne ich bis heute gerne. Latein zwischendurch auch, jedoch nur, wenn ich es mir selbst beigebracht habe, nie wenn ich in der Schule lernen musste. Mir gefällt das Konzept einfach nicht, wie einem Wissen dort eingetrichtert wurde. Du hast heute nichts/schlecht gelernt? Du bekommst eine schlechte Note. Hm. Ein Mensch kann aber nicht immer auf 100% laufen. Es gibt schließlich Tage, an denen man super aktiv ist und Tage, an denen selbst das aufstehen schwer fällt. Durchgehende Belastung ist keine gute Lernbegleitung.

Deshalb habe ich mich dazu entschlossen mir selbst eine neue Sprache beizubringen, eine, die mir vielleicht auch mal etwas bringt. Ich habe mich nach kurzem Überlegen für russisch entschieden. Damit möchte ich mich gar nicht für das politische System dort aussprechen, jedoch interessiert mich die Kultur doch sehr und finde die Sprache sehr schön.

Ich möchte meine Lernfortschritte hier gerne dokumentieren, denn ich finde, dass auch Sprachen irgendwie mit IT und programmieren zusammenhängen und das somit trotzdem in das Konzept dieses Blogs passt.

Bevor diese Lernaktion startet, weiß ich nur Dinge wie привет, спасибо – hallo, danke; solche Dinge eben. Mein Ziel ist es jedoch, eine ganz normale Unterhaltung führen zu können. Dafür setze ich auf Lernapps, wobei mein Favorit Duolingo ist. Der Service ist nicht nur kostenlos, sondern spricht mich zudem auch vom Design und der Lernkurve sehr an. Nebenbei habe ich auch einen Blick auf das Nachrichtenportal RT (früher Russia Today) geworfen (erneut: keine Bewertung des Inhalts oder der Vorwürfe), welches auf der Website Übungen anbietet russisch zu lernen. Ich persönlich halte das für eine ausgesprochen gute Idee, andere Menschen für die eigene Amtssprache zu begeistern. Das könnten sich deutsche Medien vielleicht abschauen (?).

Neben dieser Lernapp und gelegentlichem Lesen von Blogbeiträgen verziere ich mein Zimmer zudem mit Notizzetteln, auf denen Begriffe stehen. Durch den täglichen Kontakt, wächst mein Wortschatz eher so nebenbei und macht mir das Lernen leichter. Wer übrigens denkt, dass ein anderes Alphabet eine große Hürde ist, der irrt. Kyrillische Buchstaben zu lesen und zu verstehen, klappte verhältnismäßig schnell und ist auch immer interessant.
Ich muss für mich persönlich leider trotzdem feststellen, dass ich Wörter besser aussprechen und lesen kann, als sie dann auch tatsächlich zu schreiben. Das werde ich als nächstes üben. Mein Problem ist beispielsweise, dass es im Russischen 33 Buchstaben – davon zwei Betonungsbuchstaben – im Alphabet gibt (Buchstaben, die nur anzeigen, ob der vorherige Buchstabe hart oder weich gesprochen wird).

Eine weitere gute Sache, zu der ich wirklich jedem raten kann, der sich mit neuen Sprachen beschäftigt, ist mit Muttersprachlern zu sprechen, oder zu Menschen, die diese Sprache immerhin beherrschen. Muttersprachler können einem immer weiterhelfen, wo Apps und Lernprogramme scheitern. Welche Floskel sagt man jetzt, wo muss die Betonung eigentlich liegen, was ist ein No-Go, worauf muss ich in einem Gespräch achten – einfach Dinge, die dir niemand sonst so richtig beibringen könnte.

Zu guter Letzt noch ein kleiner Nachruf:
Ich liebe es neue Sprachen zu lernen, ich möchte nun nach meiner Schulzeit endlich beginnen mehr davon zu lernen und auch mal in andere Länder reisen um mich dort mit den Menschen zu unterhalten. Das ist der eigentliche Grund für mich Sprachen zu lernen. Es geht mir neben der Sprache an sich (Den Vokablen, der Grammatik,etc) einfach auch darum, Menschen kennenzulernen und deren Sicht auf die Welt zu verstehen. Nur in meinem Heimatland rumzufahren und mich dort mit Menschen zu unterhalten kann interessant sein, muss es aber nicht. Aber mal in neue Länder fahren, rausfinden, ob Vorurteile stimmen und ob mein Weltbild eigentlich richtig ist, das ist es, was mich wirklich reizt!

Android Apps entwickeln

Ich habe in letzter Zeit ein paar Erfahrungen mit Androidprogrammierung gemacht. Das Programmieren für Android macht mir tatsächlich auch oftmals Spaß, ich habe aber einige Probleme, die ich hier mal niederschreiben möchte und auch ein bisschen fragen möchte.

Was mich stört

Fragwürdig finde ich die viel zu überladene Entwicklungsumgebung Android Studio.
Nicht nur, dass sie einige Minuten zum starten benötigt, nein ich habe ein Problem mit dem handling.
Ich weiß die wichtigsten Sachen, wo ist build & run beispielsweise. Aber es verwirrt mich vieles und viele Optionen sind meiner Meinung nach unnötig. Ich möchte eine IDE, die baukastenartig ist. Plugins dazuinstallieren wäre so eine Sache, die mich freuen würde, wenn dadurch die Basisumgebung mehr lightweight wäre (Ich schwärme immer noch von VIM, jaja).
Was mich grundsätzlich stört – und daran ist Android Studio gar nicht schuld – sind Design und flexible Größen von Buttons/Text. Ist natürlich logisch, dass Design immer ein bisschen frikelig ist, da muss man einfach ein Händchen und die Geduld für haben. Ich denke ich bekomme das hin, bin aber nicht der größte Fan davon.

Was ich mag

Ich mag lustigerweise etwas, was ich eben noch als Verbesserung/Änderung gewünscht hatte – ein Baukasten-Prinzip. Genau das ermöglicht Android Studio mit den Activities. Activities stellen dabei sozusagen immer eine neue Ebene dar. Wenn man bei einem Spiel zuerst in einem Hauptmenü landet, dann ist das eine Activity. Drückt man dann auf Spiel starten o.ä. wird eine neue Activity gestartet. Man kann Activities aber auch „verbinden“, indem man dem Konstruktor der neuen Activity bestimmte Attribute übergibt. Das mag ich und finde es für eine gute Lösung.
Dann gibt es noch das Feature, dass man Dinge nicht nur in der XML Datei editieren, sondern sie auch per Maus verändern kann. Das geht über den sogenannten Design Reiter, mit dem man das Ergebnis auch zusätzlich sehen kann. Ich kann mich nur wiederholen: Mag ich.
Das in Java entwickelt wird stellt für mich kein Problem dar, ich finde es sogar gut. Java ist eine einfache Sprache und ich programmiere nun schon länger darin. Länger als ich diesen Blog betreibe. Außerdem mag ich, wie Java Klassen und Objektorientierung managed. Aber das mal wann anders.
Was ich mag ist, dass mit ADB unterstützt wird sein Smartphone direkt zum testen verwenden zu können – und das wirklich schnell und unkompliziert. Kabel dran, mit dem PC verbinden, USB-Debugging aktivieren, Projekt in Android Studio starten – works. Außerdem finde ich das Feature von den virtuellen Maschinen toll. Ich habe ein Nexus 5 (?) als virtuelle Maschine laufen und darauf teste ich dann. Läuft schnell und unkompliziert. Und wieder mal: mag ich.
Tatsächlich wird es einem in Sachen Design einfacher gemacht, indem Layouts bereitgestellt werden, wie einzelne Elemente wo platziert werden sollen. Mir als Designlegastheniker nimmt das echt nen Spaten Arbeit ab. Zentrieren, flexible Größen, alles kein Problem. Besser als alles mit CSS zu stylen. Been there, done that.
Kurz zum look and feel vom editieren des Sourcecodes: Die Autokompletierung gefällt mir sehr, das Theme lässt sich hell und dunkel färben, es zeigt Fehler im Code an – alles was eine IDE von 2018 so tun können sollte um benutzbar zu sein also.

Abschließend kann man sagen, dass Android Studio wirklich eine gut geeignete IDE fürs Apps entwickeln ist. Auf meinem Thinkpad x201 ist das sicherlich keinen Versuch wert, man benötigt tatsächlich ein bisschen Feuer unter der Haube um das ganze zu stemmen. Ich bin eigentlich kein Fan von solchen Entwicklungsumgebungen, aber hier wird wirklich was für die Leistung geboten.
Was sind denn so eure Erfahrungen mit Android bzw Android Studio? Schreibt das gerne auch in die Kommentare!

Vim als Java IDE

Wer momentan einen leistungsschwachen Laptop/PC benutzt oder schon einmal einen solchen benutzt hat, der weiß, dass rechenaufwändige IDEs nervig sein können. Mit nervig meine ich ständiges abstürzen, lags und bugs. Das nervt nicht nur, sondern stört auch den Entwicklungsprozess. Wer mich kennt weiß, dass ich ein Lenovo Thinkpad x201 nutze, das ist unter den Rechnern nun eben nicht mehr das Schnellste.
Deshalb möchte ich nun eine Kombination meines liebsten Texteditors (neben sublime text) mit sämtlichen Plugins vorstelllen: Vim als Java IDE.

Vorbereitungen

Eine Sache, die definitiv sehr wichtig ist: Backups der vimrc. Ohne ein Backup könnte es nervige Datenverluste geben und eine Vim config die länger als zwei Wochen im Einsatz war, ohne sie zwischendurch angefasst zu haben, war zumindest bei mir nicht nochmal einfach so reproduzierbar.
Als nächstes habe ich mir für mich ein nützliches tool namens swim besorgt.
Swim ermöglicht es mir, zwischen mehreren vimrc wechseln zu können, um damit für verschiedene Programmiersprachen andere Plugins zu verwenden. Sehr coole Sache.


Als nächstes habe ich mir Vundle installiert. Das ist ein Plugin-Manager für Vim und für mich recht einfach zu benutzen. Mit Vundle habe ich mir dann javacomplete2 runtergeladen – eine Autokomplettierung in Vim für Java – ebenfalls ein sehr cooles Projekt, das den ganzen Workflow herbeizaubert. Denn mein wirkliches Problem, das ich mit Vim als Entwicklungsumgebung habe, oder eher hatte, war immer, dass ich eigentlich gleichzeitig nicht die Features von eclipse/NetBeans verlieren wollte. Genau dann hilft javacomplete2 aus der Klemme, da mit einigen nützlichen Shortcuts die Vorschläge angezeigt werden. Dazu benutzt das Plugin übrigens javavi, was mit maven gebaut wurde.

Workflow

Kommen wir zum für mich spannenderen Teil: Dem eigentlichen Workflow/programmieren.
Ich muss sagen, dass ich überrascht von dem Funktionsumfang bin. Natürlich ist die Configdatei noch nicht perfektioniert, so möchte ich beispielsweise noch einige Shortcuts hinzufügen, damit ich häufige Stellen per Knopfdruck schreiben kann. Ein Beispiel wäre die main Methode, die man eben nicht immer selbst schreiben möchte. Auch könnte ich mir ein direktes kompilieren und ausführen aus der Vim-Konsole heraus vorstellen. Ich mache dazu auf jeden Fall mal noch ein Update.
Jetzt wird aber erst einmal das Tool weiter ausprobiert und ich hoffe, dass es mir auch noch in Zukunft weiter so gut gefällt.
Sollte ich übrigens mal meine vimrc veröffentlichen, damit man sieht, wie ich so unterwegs bin? Schreibt das gerne mal in die Kommentare!
Bis dahin noch ein paar schöne Tage!

1 – 2 Beiträge in der Woche – für ein Jahr

1 – 2 Beiträge in der Woche und das ein ganzes Jahr lang. Das klingt vielleicht im ersten Moment wenig, im zweiten Moment wird es garantiert sehr viel Arbeit sein.
Aber mal zurück auf den Boden der Tatsachen

1 – 2 Beiträge die Woche

Ein mancher wird sich wohl fragen, warum man sich selbst einen solchen Stress machen möchte und dem kann ich nur meine folgenden Punkte entgegensetzen, die wirklich nur für mich sprechen:

  1. Ich möchte den Blog wieder aufleben lassen bzw. mehr content liefern
  2. Ich möchte geregeltere Uploadtermine haben, zu denen ich mich vielleicht auch einfach mal zwingen muss
  3. Ich möchte mit diesem geregelten Uploadplan eine größere Menge ansprechen
  4. Ich möchte mir selbst eine Aufgabe stellen um produktiver zu sein
  5. Ich möchte meine Schreibfertigkeiten verbessern

Diese Fünf Punkte müssen auf keinen Fall für jeden sprechen und das ist natürlich alles sehr subjektiv, aber dennoch wird es mir sehr helfen. Ich habe mir ein bisschen Gedanken gemacht, was verändern möchte, um mit meinem Blog Projekt (was nun übrigens mehr als Drei Jahre alt ist) glücklicher zu werden. Nach kurzen Gedanken, das bloggen aufzuhören, war das letzten Endes keine Option für mich und ich habe mich dann für das regelmäßige bloggen entschieden.
Früher war auf diesem Blog tatsächlich deutlich mehr Action los und ich habe es sehr genossen Kommentare zu lesen und meine (wenn auch aberwitzig kleinen) Fortschritte zu präsentieren. Das wird nun wieder häufiger passieren, auch weil ich durch das bloggen viele Fehler in Codes gefunden habe. Außerdem – um den dritten Punkt in der Liste zu erklären – finde ich es tatsächlich nicht so relevant, ob gerade 3 oder 300 Menschen meine Texte hier lesen, es geht mir bei meinem Blog eher um ein Logbuch, mit dem ich mir selbst helfen kann mich zu verbessern. Trotzdem ist eine große Leserschaft natürlich immer eine schöne Sache!

Konkrete Planung

So nun genug Drama und zurück zu den Fakten:
Ich hoffe ich kann jede Woche bis zu zwei Beiträge hier veröffentlichen um über meine aktuellen Projekte zu schreiben oder allgemein auch über Tagestrips zu berichten.
Das Ziel sind jedes mal mindestens 300 Wörter (ungefähr die Länge bis hier hin) jedoch trotzdem vielleicht einmal im Monat einen längeren Beitrag zu schreiben, ich tendiere dabei zu einer Länge von ungefähr 700 Wörtern.
Gerne berichte ich auch immer mal wieder in gesonderten Beiträgen – sozusagen in einem dritten Beitrag in der Woche – wie es mir mit der aktuellen blogging Situation ergeht.
Das ganze Experiment möchte ich übernächste Woche starten, da ich momentan noch in meiner Abiturphase stecke.
Am 18.06.2018 wird dieses Experiment starten und danach in den nächsten Tagen der erste Beitrag erscheinen.
Schreibt mir gerne eure Meinung in den Kommentaren und noch einen schönen Tag!

AufsMaul – das LAN-Party Spiel

AufsMaul ist (bzw wird) in Spiel, welches rundenbasiert funktionieren soll und bei dem man gegen Monster bzw gegen Gegenspieler kämpfen soll.

Programmiert wird in Java – Front End und Back End.
Front End mit JFrame – sozusagen mein daily driver wenn ich etwas grafisches in Java mache, auch wenn ich mir in Zukunft mal javafx ansehen werde, was woll langsam das ist, was man dafür tun sollte –
Back End mit dem ServerSocket bzw für die einzelnen Verbindungen Sockets.

Das ganze mache ich aber auch, um mich mal mit Threads unter Java zu beschäftigen, wobei ich mit dem Interface Runnable arbeite und nicht mit der Oberklasse Thread. Aus dem einfachen Grund, dass man mehr als ein Interface implementieren, jedoch nur von einer Oberklasse erben kann.

superclassesDie Grafiken die ich benutzen werde, werden wohl größtenteils von opengameart sein, da es dort wirklich ziemlich gute Vorlagen und Characterdesigns gibt!
Bei Interesse nach Updates dieses Projekts, muss man einfach nur nach der Kategorie AufsMaul suchen, oder diesem Link folgen.

Subnetworx schlägt bplaced

Wow, fast ein Jahr ist es nun her hier etwas geposted zu haben.
Und jetzt möchte ich ein bisschen erklären warum das so ist und was ich sonst so getrieben habe – inaktiv war ich beim bloggen nämlich nicht, ganz im Gegenteil. Aber eins nach dem anderen:

Am 07.09.2017 hatte ich die spontane Idee mir mal ein bloggingtool zu programmieren, welches meine eigene Markuplanguage interpretiert und parsed. Entgegen vieler Meinungen hatte ich viel Spaß dabei das ganze zu programmieren 😀 in letzter Zeit wächst mir das jedoch ein bisschen über den Kopf.
Jedenfalls habe ich ab dem 07.09.2017 eine Art Devlog auf psittacus.bplaced.net geposted. Anfangs sehr oft, danach nur noch wöchentlich bis monatlich. Mein tool gab mir alles was ich wollte. Eine vim Umgebung mit der ich fix und ungestört Posts schreiben konnte. Nachteil: Graphische Formatierungen.
Doch davon lies ich mich zuerst nicht beirren und programmierte und bloggte munter weiter. Aber nach nun fast fast einem Jahr nervt mich das alles nur noch. Neben dem html file muss ich noch ein rss file generieren und das hatte ich vorher noch nie getan (geschweige denn es mir jemals angesehen, Schande über mein Haupt. Außerdem waren meine Webdesignkenntnisse , naja sagen wir mal, nicht die besten. Rudimänteres Zeug kann ich und auch ein bisschen stylen macht mir auch viel Spaß, aber krass gut bin ich nicht 😀
Wer sich noch die Blogposts geben möchte kann sie gerne lesen, noch sind sie online! Warnung: Alles auf englisch. Ein weiterer Grund warum ich diesen blog gegründet hatte. Einfach mal auf einer anderen Sprache bloggen. Latein bietet sich nicht wirklich an, deshalb Englisch!
Neben diesem Blog durfte ich auch Teil eines Blogteams des (noch entstehenden) Blogs politikompass werden. Dort schreiben wir über Politik, aktuelles Weltgeschehen und ich meinerseits auch ein bisschen über tech. Von Gleichberechtigung, über Weltanschauungen bis hin zu Privatssphäre im Internet ist alles dabei. Der Blog ist erst vor kurzem entstanden, momentan haben wir noch nicht so viel Zeit etwas zu posten (Abschlussprüfungen stehen an und sind mitten am laufen), in Zukunft wird sich das aber noch ändern! 🙂

Nochmal zurück zum jetzt alten bplaced blog: Der Code für den Parser etc ist alles auf meinem Github Account, ich mag den Code sogar ziemlich gerne.

Nebenbei habe ich neben dem programmieren übrigens auch meine Liebe zu Poetry Slam und zeichnen entdeckt, was beides nun nebenbei intensivst konsumiert und produziert wird! (Aber nicht immer im Internet oder überhaupt öffentlich)
So danke für das lesen und erfreut euch an neuen Blogposts in Zukunft wieder hier. Der alte Blog wird wohl nun erst einmal auf Eis gelegt.

Schöne Grüße,

psittacus.