HD44780-Displays und Arduino: Individuelle Zeichen erzeugen

20161003_220723.jpg

Ach ja, es war einer der ersten Beiträge auf wiefreak.de: Jener Beitrag, in dem ich beschrieb, wie man ein HD44780-Display an einen Raspberry anschließt. Was ist seitdem passiert? Naja, mit dem Design des Blogs nicht viel, die Qualität ist… äh…. gleichbleibend mittelmäßig geblieben. Es kommen nach wie vor nur sehr selten Beiträge, und die meisten Beiträge sind nur sehr kurz und haben nur wenig von der sogenannten persönlichen Tiefe, die ich immer wieder vergeblich versuche in die Artikel einzubringen. (Sagte nicht mal jemand als Student hat man haufenweise Zeit?)
Egal, genug des Selbstmitleids. Heute geht es darum, wie man sich eigene Symbole und Zeichen auf einem solchen Display erzeugen und anzeigen lassen kann.
Und, wie so oft bei den Arduino-kompatiblen Bauteilen ist dies deutlich einfacher als erwartet.
Das Ganze unterteilt sich in 3 Teile: Die eigenen Zeichen definieren, sie in den Speicher des Displays laden, die Zeichen anzeigen.
Dabei ist der erste Schritt zugleich der komplizierteste. Wir definieren einen Array aus 8 5-Bittrigen Bytes (ich hab keine Ahnung ob man das wirklich so schreibt…), in den wir dann die 8 Zeilen des Displays laden.

byte lol[8] = {
0b11000,
0b10001,
0b00001,
0b00100,
0b00010,
0b00000,
0b00000,
0b10001}

Wichtig hierbei ist, dass jedes „1“-Bit später „hervorgehoben“ wird. So Zeichnet man sich Stück für Stück seine Form.
Da das sehr umständlich und schlecht vorzustellen ist, habe ich schnell mit C++ ein Progrämmchen zusammengehämmert, mit dem sich diese Formen viel schneller und besser erstellen lassen.

costum_char_ad
Am Ende lässt man sich den Code generieren und fügt ihn über der setup()-Schleife ein.

Das kleine Progrämmchen kann man sich hier runterladen.

So! Jetzt aber genug werbefinanzierter Clickbait. Zurück zum Display.

In der Setup()-Schleife fügt man dannn für jeden Char die Zeile

lcd.createChar(1, besterName);

ein. Natürlich jeweils mit der Bezeichnung, die ihr oben vergeben habt. Die Zahl steht für den jeweiligen Byte. Also bei mir ist es der erste.

Wichtig beim Aufrufen ist, dass ihr nicht print() verwenden dürft, es muss write() sein. Wenn es dann immer noch nicht geht, setzt die Zahl in ein byte(Zahl). das muss bei manchen gemacht werden.

WhatsApp: „FixedSys“-Konsolenschriftart verwenden

Mal wieder legt WhatsApp kräftig nach, und hat WhatsApp still und heimlich mit einer weiteren Textformatierungsmöglichkeit versorgt, ohne, dass wir das mitbekommen haben.
Aber das ist ja kein Problem, denn zum Glück haben wir ja Kollegen, die für uns den Twitter-Nutzer „WABetaInfo“ stalken. (Wieso mach ich das eigentlich nicht?)
Der hat nämlich rausgefunden, dass neben den Möglichkeiten zum fett, kursiv oder unterstrichen schreiben, die wir schon gezeigt haben, jetzt auch noch eine weitere Möglichkeit dazu kommt. Es ist ab sofort möglich, die bekannte Konsolenschriftart „FixedSys“ zu verwenden. Dazu muss man wie sonst auch ein bestimmtes Zeichen vor und nach dem entsprechenden Text setzen. Dieses mal sind es aber gleich drei Zeichen. Beziehungsweise, es ist ein Zeichen, aber dreimal. Es ist das sogenannte „Gravis“. (Ja, ich wusste auch nicht, wie das heißt oder was das ist.)
Es ist dieses Zeichen: `
Dieses setzt man drei Mal vor und hinter den Text, den man in dieser Schriftart schreiben möchte.
Also Das ist ein Text.
Eine schöne Sache, falls man wie ich ab und zu Code-Zeilen oder Snippets per WhatsApp versendet.

image

VR mit der Google Cardboard 😍

Vor einiger Zeit habe ich mir eine Google cardboard gekauft. Das ist schon relativ lange her. Ich hatte auch ein paar schöne Stunden Spaß mit ihr. Leider muss ich sagen dass das sehen in der virtuellen Realität doch sehr meine Augen verwirrte und nach einiger Zeit einfach nur noch wehtat. Jetzt habe ich sie aus Interesse noch einmal rausgekramt und siehe da – nachdem ich ein bisschen an ihr rumgewackelt hatte und ein paar Einstellungen vorgenommen habe ist es mir gelungen die Brille so zu kalibrieren, das es in den Augen mittlerweile kaum noch weh tut. Ich kann nun mittlerweile auch zwei Stunden lang Filme mit der cardboard gucken, ohne Auswirkungen zu spüren.

image

Wenn dieser störende Faktor beseitigt ist, merkt man erstmal, wie geil diese ganze Sache mit der Virtual Reality eigentlich ist. Es macht einfach so viel Spaß in eine andere Welt abzutauchen, wenn man dabei keinen Augenkrebs bekommt. Die Technologie steckt noch in den Kinderschuhen, deswegen ist relativ schwer ist, eine passende App für einen bestimmten Verwendungszweck zu finden. Denn noch machen viele Apps großen Spaß. Zum Beispiel habe ich letztlich eine Virtual Reality Version der bekannten App Crossy Road gespielt.

image

Es ist einfach ein ganz anderes Gefühl dieses Spielprinzip was man eigentlich ja kennt, auf diese spezielle Weise zu spielen. Sich selbst um zu sehen und selber zusammen zu zucken, wenn man von einem Auto überfahren wird.

image

WhatsApp: NFC,QR-Codes,Zitate

Die Jungs bei WhatsApp legen richtig los, und versorgen die App (zumindest die Android-Version) immer wieder mit neuen Updates. Manche scheint das zu stören…

image

… ich finde das super. Die Entwickler Experimentieren mit neuen Möglichkeiten und wollen sehen, was sich machen lässt und was nicht. Viele Leute haben Angst, dass der Messenger dadurch zu sehr aufgebläht wird. Die Angst habe ich auch, aber ich denke dass sich WhatsApp hier von Facebook nicht zu sehr reinreden lässt. Denn WhatsApp hat den Vorteil, dass der Messenger sich unglaublich leicht und intuitiv bedienen lässt, egal, wie viele neue Funktion auch hinzukommen. Es ändert sich fast nie etwas an der eigentlichen und intuitiven benutzungsweise. Mit anderen Worten: egal wie viele neue Funktionen zu kommen, es wird nie komplizierter, mit anderen zu kommunizieren. Der letzte Eingriff in dieses System, an den ich mich erinnern kann, war, als WhatsApp die Telefonie einführte. Hier kamen zu den Reitern „Chats“ und „Kontakte“ auch noch der Reiter anrufen hinzu das war das letzte Mal das WhatsApp den Messenger merklich verändert hat. Ich denke, dass abgesehen von eben genannter Änderung die meisten Benutzer nicht mal bemerken, wenn neue Funktionen hinzu kommen. ( Das könnte auch erklären warum so viele von den ständigen Updates genervt sind)

Jedenfalls hat WhatsApp sich auf die Fahnen geschrieben in der nächsten Zeit verstärkt auf die Kommunikation zwischen Unternehmen und deren Kunden zu setzen. Unternehmen soll den Messenger nutzen, um mit Ihrem Kunden genauso schnell zu kommunizieren wie die Kunden es mit ihren Freunden tun. So könnte beispielsweise die Kundenhotline in Zukunft eine Kunden-Whatsapp-nummer sein. Viele interpretieren die neuesten Änderungen bei Whatsapp in diese Richtung. In Zukunft soll es möglich sein, Leute nicht nur über die Person hinzufügen Funktion innerhalb der Gruppe bei Whatsapp zu der Gruppe hinzuzufügen, sondern dies soll auch von außen möglich sein. Das heißt, eine Person kann sich selbst zu einer Gruppe hinzufügen, sofern Sie dies wünscht. Dies soll auf drei verschiedene Arten möglich sein:
Zum einen soll es dem Gruppenadministrator möglich sein, die Gruppe in einen NFC-tag zu schreiben, sodass man diesen mit seinem Handy scannt, um der Gruppe beizutreten. Zweitens soll es möglich sein einen QR Code zu generieren, den jemand dann mit seinem Handy einscannen kann, um einer Gruppe beizutreten. Drittens soll es auch noch möglich sein, die bei beispielsweise google+ einen Link zu generieren, über den man dann der Gruppe hinzugefügt wird.
zusammengefasst sind das alles Möglichkeit die dafür sorgen dass der Nutzer nicht mehr eingeladen werden muss sondern selber je nach deine Interessen einer Gruppe beitreten kann. Da bis auf den Link die Möglichkeiten alle örtlich beschränkt sind könnte man sich demzufolge also vorstellen dass ein Unternehmen zum Beispiel einen QR-Code an seiner Tür anbringt, über den man der Supportgruppe für das jeweilige Unternehmen beitreten kann.

Die einzige Neuerung, die ich kritisch gegenüberstehe ist die Voicemail. Hier soll es möglich sein, bei einem verpassten Anruf jemandem eine Sprachnachricht hinterlassen. Moment mal. Sprachnachricht? Das kennt man doch. Mir erschließt sich nicht ganz der Sinn einer Sprachnachricht die man als Voicemail hinterlässt gegenüber einer Sprachnachricht, die man demjenigen ja auch einfach so hinterlassen könnte. Vielleicht ist mit dieser Funktion ja nur gemeint, dass man jemandem eine Sprachnachricht schicken kann, direkt, nachdem man vergeblich versucht hat, ihn zu erreichen.

[#WLANHACKDING] MACHT BACKUPS!

Wie es für Bastelprojekte allá Wieland üblich ist, ist mir eine SD-Karte kaputt gegangen. Bei dem Versuch, mich nicht mehr einloggen zu müssen, da ich an diesem Zeitpunkt noch nicht auf die virtuelle Tastatur zurückgreifen kann, und deswegen theoretisch immer eine echte mitschleppen müsste, ist mir die SD-Karte kaputt gegangen. Nachdem rumschreiben in diversen Konfigurationsdateien, deren Veränderung nichts genützt hat, bitte meinen raspberry auf einmal neu, und sagte mir, ich befinde mich im Notfall Modus und meine SD-Karte sei kaputt. Das war natürlich nervig. Ich musste also Kali neu auf eine SD Karte brennen, alle packages und Abhängigkeiten neu installieren, neue Updates und Upgrades ausführen, alles so Sachen, die ich bei meiner Internetleitung eigentlich nicht machen möchte.
Demzufolge lautet mein heiliger Tipp heute: macht am besten regelmäßig Backups von eurer SD-Karte. Nutzt dazu den win32diskimager und klickt auf read statt write. Dann wird das, was sich derzeit auf eurer SD-Karte befindet, in ein Image geschrieben, dass ihr im Zweifelsfall einfach ganz normal auf eine Ersatz SD-Karte brennen könnt.

Die deutsche Bahn stellt Daten zu Fahrplan und Zügen zur Verfügung

Die Bahn möchte wieder attraktiver werden, deshalb haben sie eine Digitalisierungsoffensive ins Leben gerufen, über die sie ihr Angebot und ihre Daten zur Verfügung stellen wollen, damit jeder es oder kleine Programme programmieren kann, die mit dem Server interagieren. Das ganze ist quelloffen und verfügbar unter der Creative-Commons-Lizenz. Man kann sich per E-Mail einen API Schlüssel zusenden lassen, um dann auf Fahrpläne Parkmöglichkeiten und vieles mehr zugreifen zu können.

image

image

Die Antwort gibt es entweder in XML oder JSON. Es ist aber Vorsicht geboten, man merkt wenn man sich mal die Antwort aus den http-daten an sieht ganz klar, dass ich das ganze noch in der Beta befindet, da viele Daten noch nicht da oder einfach leer sind. Man sollte also für das erste wirklich nur zum Testen übergehen, aber noch keine App in den Produktionsstatus überführen.

image

Einen API-Key bekommt ihr, indem Ihr den Leuten von DBOpenData einfach eine Mail schickt.

WhatsApp: fett oder kursiv schreiben

Kurz Notiert: WhatsApp kann jetzt auch fett oder kursiv schreiben. Hierzu muss man einen Abschnitt den man fett schreiben will einfach in Unterstrichen einrahmen. Einen Abschnitt, der kursiv gedruckt werden soll, setzt man in Sterne.

image

WhatsApp kann nun PDF’s versenden

Ganz kurz für alle, die das noch nicht mitbekommen haben. WhatsApp unterstützt seit der neuesten Version neben über 100 neuen Emojis auch die Möglichkeit, PDF Dateien über WhatsApp zu versenden. Dafür wurde aus dem anhängen Menü die Option „Video“ entfernt und durch „Dokument“ ersetzt.

image

Versendet man nun ein Dokument, bekommt man eine Übersicht aller PDF-Dokumente auf dem Gerät angezeigt. Hier kann man eines auswählen, und es dann teilen. Interessant finde ich die Chat interne Vorschau des Dokuments. Während es versendet wird sieht man die Seitenanzahl und die Größe des Dokuments inklusive des bekannten Spinners, der den Fortschritt des Uploads anzeigt. Ist der Upload abgeschlossen, wird nicht mehr die Größe des Dokuments angezeigt.
Weiterhin sieht man in einem kleinen Fenster eine Vorschau des Dokuments, was bedeutet, dass es in WhatsApp ja einen integrierten reader geben müsste.

image

Denn man kann sich das Dokument ja in dem kleinen Fenster ansehen. Aber nein. Mit Whatsapp selbst kann man die PDF Dokumente nicht öffnen. Tippt man auf das Dokument, so wird man aufgefordert, einen passenden Reader auszuwählen.

image

Kali Linux 2.0 auf dem Laptop

Ich muss zugeben, Kali Linux ist ziemlich geil. Das größte Problem heutzutage bei der Verwendung von sogenannter Dual-Use-Software ist nicht die Verwendung an sich, sondern meist die Installation.

image

Kali Linux auf dem Desktop (Screenshot (c) Sempervideo)

Die bereitet Kopfzerbrechen und treibt einen in den Wahnsinn. Natürlich möchte auch ich gerne mal gebrauch von der ominösen Dual-Use-Software machen, habe aber auch keinen Bock auf das stundenlange Kopfzerbrechen, das hab ich schon hinter mir. In meiner Jugendlichen Naivität dachte ich doch tatsächlich, ich könnte Kali einfach auf einem Raspberry Pi installieren, und direkt mit dem krassen scheiß loslegen. Tja, denkste!! Ich hatte nämlich gerade nur einen Raspberry Pi Modell B zur Hand, doch der bringt leider nicht genug Leistung für Kali 2. Bedeutet, egal welche exploitation oder MITM Software ich startete, früher oder später war nicht mehr genug Arbeitsspeicher da, um irgendwas konstruktives zustandezubringen von Seiten des Pi’s. Insofern waren eine 32 Gigabyte SD Karte und fast 4 Stunden Arbeit im Arsch. Also habe ich jetzt eine neue Strategie. Anstatt mir Kali Linux 2 auf eine DVD zu brennen und es dann als Live-CD zu benutzen, werde ich es mir zwar auf eine DVD brennen und als Live-CD benutzen, allerdings werde ich mir auch ein weiteres Laufwerk für meinen Laptop holen, auf welches ich dann Kali Linux drauf spielen werde. Also gesagt wie getan habe ich meine Festplatte aus meinem Laptop ausgebaut und mir eine neue besorgt.

image

Da ich immer für meine Freunde da bin und ihnen mit Rat und Tat zur Seite stehe, sind sie auch für mich da. Und die haben mir gesagt, dass ich das Problem bekommen könnte, dass irgendwann meine Kontakte ausleiern, wenn ich ständig zwischen meinem normalen Betriebssystem und Kali Linux hin und her wechsle. Ja in der Tat, das könnte ein Problem geben. Aber damit beschäftige ich mich später, jetzt muss ich erst mal versuchen die 2,6 Gigabyte von der offiziellen Kali Linux Seite herunterzuladen, diese auf eine DVD zu brennen, und mir dann für 35 € irgendwo in der Stadt ein halbwegs
image

akzeptables 2,5 Zoll Laufwerk beziehungsweise eine 2,5 Zoll Festplatte zu holen, die braucht nicht mal viel Speicher zu haben, es reichen theoretisch schon 32 oder 64 oder 128 aber ich denke es wird bei einer 500GB Festplatte bleiben, da sich jede kleinere Speicherkapazität einfach nicht mehr lohnt, der Preis sinkt nicht weiter als 35 € egal ob 500 oder 128 GB. Und dann wollen wir doch mal sehen, ob und wie es läuft.

WhatsApp bekommt eine API ❤

Oh ja! Richtig gehört! Auf einer Messe hat WhatsApp bekannt gegeben, im neuen Jahr für Unternehmen attraktiver werden zu wollen. Man möchte, dass Unternehmen ab demnächst WhatsApp für den Kundenservice benutzen. Dies sei total Benutzerfreundlich und würde zudem die Kosten senken (weil wegen 1 Mrd. Nutzer und so), außerdem sei es innovativ, da man so auch Bilder, zum Beispiel Screenshots von Problemen oder Bugs versenden kann. Ich weiß nur eins: Eine API wäre echt ziemlich cool. Vielleicht wird es ja nicht nur möglichkeiten für Unternehmen, sondern auch für Entwickler geben. Der Traum wäre es natürlich, auf Nachrichten und Chatverläufe zugreifen zu können, dann könnte man die Sachen, die man früher nur per SMS machen konnte, auch mit WhatsApp machen.

WhatsApp – Nutzungsstatistiken vorgestellt

Der Chef von WhatsApp, dessen Namen ich nicht kenne und ich auch zu faul zu recherchieren bin, hat Heute erstmals offizielle Zahlen bezüglich WhatsApp auf einer brisanten Infografik vorgestellt. Da ich keine Moral, Niveau oder achtung vor dem Urheberrechtsgesetz habe, zeige auch ich diese Grafik hier:

image

Wow, das sind echt ’n paar Zahlen. Dröseln wir sie doch mal auseinander.
Als erstes fällt auf, das die Grafik schon vom Anfang des Jahres stammt und mal wieder trotz des glorreichen Internetzes nicht schneller den Weg zu uns gefunden hat. Na egal.
WhatsApp hat jetzt eine Milliarde Nutzer. Das war auch der Anlass für die anfertigung der Infografik. Das bedeutet, jeder siebte Mensch auf der Welt nutzt mittlerweile WhatsApp. Jeder siebte. Egal ob jemand aus Deutschland Großbritannien, der restlichen EU, Amerika oder auch aus einem ärmeren Land, zum Beispiel Länder in Südamerika Afrika oder dem Nahen Osten. Jeder siebte von dem. Egal ob du dich in Berlin Moskau, Tel Aviv oder Abuja auf einem belebten Platz stellst und anfängst Leute abzuzählen, immer wenn du alleine durch 7 teilbaren Zahl ankommst, nutzt garantiert einet von den WhatsApp. Das ist ganz schön heftig muss ich sagen, denn damit zeigt sich, dass die Globalisierung wirklich global wirkt, und selbst mittlerweile in ärmeren Ländern WhatsApp zu einem wichtigen Kommunikationsmittel geworden ist.

Weiterhin kommen laut Infografik auf eine Milliarde Nutzer eine Milliarde Gruppen Punkt das ist durchaus interessant das bedeutet nämlich, dass jeder Nutzer in durchschnittlich einer Gruppe ist. Was bedeutet, dass viele Nutzer in gar keine Gruppe sein werden. Denn besonders in Deutschland zeigt sich ja immer wieder das Phänomen der sogenannten „Gruppler“, also Menschen, die wegen jeder kleinen Kleinigkeit eine Gruppe aufmachen. Jeder Kinobesuch, jede Geburtstagsfeier, und jedes Treffen bei dem mehr als zwei Personen involviert sind wird mit einer eigenen Gruppe geregelt. Natürlich immer jeweils mit einem eigenen Gruppenbild und – und das ist meiner Meinung nach der einzige Nachteil bei der Sache – natürlich wird sich in jeder dieser tausend in Gruppen über alles mögliche unterhalten, nur nicht darüber, weswegen die Gruppe ursprünglich gegründet wurde.

Die Infografik sagt auch, das jeden Tag 46 Milliarden Nachrichten versendet werden, von den 1,6 Milliarden Bilder und 250 Millionen Videos sind. Bedeutet, jede 24. Nachricht ist gar keine Nachricht sondern ein Medium. Erinnert ihr euch noch an die Zeit, als man auf seinem Handy was damals schon so eine Art Smartphone war, aber noch kein Betriebssystem hatte an dessen Namen man sich heute noch erinnern würde, unzählige lustige Videos in AVI format hatte, die dann per Bluetooth mit allerhand Freunden geteilt wurden – oder vielleicht sogar noch per Infrarot. Das ist heute im Prinzip WhatsApp. Nur dass es einem die 1000 Gruppen in den man ist, und in denen man sich ja sowieso nicht über das Thema unterhält, das Teilen besagter der Inhalte natürlich deutlich einfacher machen, denn man kann egal wo man ist sogar mehreren Leuten direkt Bildchen und Videos zukommen lassen. Gerüchten zu Folge soll es ja bald sogar möglich sein Microsoft Office Dokumente per WhatsApp schicken zu können – aber das ist momentan noch nur ein Gerücht und noch von keiner Seite bestätigt.

Das Interessanteste an dieser Infografik sind meiner Meinung nach aber die 57 Programmierer, Ingenieure, IT Experten, und Support Mitarbeiter, die das ganze System am Laufen halten und den eine Milliarde Nutzern so die Nutzung von Whatsapp ermöglichen. Für mich ein Beweis dafür das eine Handvoll Leute die Welt verändern kann. Ob zum Guten oder zum Schlechten, muss jeder für sich selbst entscheiden.

WhatsApp wird für immer kostenlos

Die Übernahme durch Facebook scheint für WhatsApp erste positive Konsequenzen zu haben. Der Gründer von WhatsApp gab vor einiger Zeit bekannt, in Zukunft die Gebühr von 1$ pro Jahr abzuschaffen. Nun ist es auch in Deutschland so weit. Viele Nutzer bekamen gestern die Benachrichtigung, ihr neues Ablaufdatum sei „Lebenslang“.

image

Jedoch gab es eine Störung, sodass manchen nutzern der Service wieder gekürzt wurde.

image

image

Aber auch dieses Problem wurde kurz darauf erfolgreich behoben. Somit ist WhatsApp nun komplett kostenlos. Die Entwickler haben bekannt gegeben, dass dieser Schritt nur durch die Zusammenarbeit mit Facebook möglich ist.

Mit Emoticons WhatsApp abstürzen lassen

Dieser Text lässt WhatsApp unter Android und WhatsApp Web abstürzen. Vielleicht erinnert sich der ein oder andere an den Artikel vor einiger Zeit, in dem ich beschrieben hatte, wie man bei WhatsApp den Chatpartner zwingen kann, den Chat zu löschen. Hier ging es darum, dass WhatsApp eine Nachicht mit mehr als 3 MB nicht verarbeiten kann, und deshalb das Programm abstürzt. Dieser Bug wurde aber schon kurz danach Behoben. Nun wurde ein weiterer Bug aus dieser Kategorie gefunden. Dieses Mal geht es um Emoticons. Diese benötigen mehr Code um dargestellt zu werden. Deshalb reichen schon 4.001 Emoticons, um das WhatsApp des Chatpartners Abstürzen zu lassen.

Killing Floor 2 Server erstellen LAN/Internet

Killing Floor 2 ist der Grafisch aufgemotzte Nachfolger von Killing Floor. Wer hätte das gedacht… Das Spiel befindet sich jedoch noch in der Entwicklung und ist daher noch nicht mit einem einfachen LAN-Multiplayer-Menüpunkt aufgestattet.
Aber nur da es diesen Punkt nicht gibt, heißt das noch lange nicht, dass es nicht möglich ist über LAN oder sogar im ganzen Internet ein eigenes Spiel zu erstellen.


 

Wieso einen eigenen Server erstellen wenn es doch schon so viele im Internet gibt, über die man problemlos online spielen kann? Ganz Einfach! Zum einen wäre da der Ping, der teilweise schon dazu führt, dass man vom Server oder Mitspielern gekickt wird. Zum anderen will man als sozialscheues Wesen vielleicht auch mal nur mit Freunden spielen ohne, dass irgendwelche 10-Jährigen Kinder den Server betreten, nur um dann ständig in das Mikrofon zu singen und alle zu beleidigen.

Der grundlegende Wunsch nach einer Möglichkeit ohne diese Probleme zu spielen, besteht also zweifellos.

Nun zum Fachlichen:
Killing Floor läuft über Steam und das macht solche Geschichten mit DIY oft schwerer als gedacht. In diesem Fall allerdings überhaupt nicht! Es macht es sogar ziemlich einfach.
Eine Grundvorraussetzung für den Server ist das Tool „SteamCMD“, da der Server von Killing Floor 2 nicht in der Bibliothek oder im Shop zum Download angeboten wird. Wie der Name schon sagt, ist dieses Tool für die Kommandozeile. Das Programm sollte man einfach herunterladen können. Wenn man das ZIP-Archiv heruntergeladen hat, muss man es in einen Ordner entpacken, der später noch zu finden ist, denn SteamCMD wird für die Aktualisierung des Servers benötigt.
In meinem Fall heißt der Ordner SteamCMD.
Die einzige Datei, die nach dem Entpacken vorzufinden ist, ist eine Anwendung. Diese ist das eigentliche SteamCMD. Man muss es zum Starten einfach anklicken. Schon öffnet sich das Kommandozeilenfenster und man sieht wie sich SteamCMD installiert und Aktualisiert.
In die Kommandozeile muss man nun folgende Befehle eingeben um den KF2Server herunter zu laden:

1. login anonymous
2. force_install_dir ..\kf2server\
3. app_update 232130 validate
4. exit

Was zum Geier macht das?

  1. Du meldest dich an. ACHTUNG! NICHT mit deinen Steam Daten anmelden, sonst kannst du nachher nicht selber auf deinem Server spielen sondern nur andere. Melde dich stattdessen mit „anonymous“ an wie es dort steht.

  2. mit diesem Befehl wird der Ordner ausgewählt in dem der Server installiert werden soll. In meinem Fall ist dieser Ordner „neben“ dem SteamCMD Ordner (..\kf2server\).

  3. Nun wird die Installation gestartet. Die App-ID vom KF2Server ist 212330 und das validate sorgt dafür, dass alles Komplett installiert wird. Das validate muss auch dahinter, wenn man auf eine neue KF2 Version updaten will. Der Vorgang dauert etwas. Man kann den Fortschritt an der Zahl erkennen, die eine Kommastelle hat. Das ist der Fortschritt in %.

  4. SteamCMD wird verlassen.

Jetzt dürfte neben dem SteamCMD-Ordner der „kf2server“-Ordner erschienen sein. In diesem Ordner findet man eine BATCH-Datei. Zum starten des Servers muss diese einfach gestartet werden. In der Batchdatei steht folgendes:
„start .\Binaries\win64\kfserver kf-bioticslab?adminpassword=123“
Hier sieht man die Einstellungen mit denen der Server gestartet wird.
Zuerst wird der Server gestartet: „start .\Binaries\win64\kfserver“,
dann wird die Karte angegeben: „kf-biotislab“
und dann werden spezielle Parameter in URL-Form mitgegeben:
z.B. „?adminpassword=123“ das Adminpasswort für diesen Server ist also 123.
man kann natürlich auch andere Dinge einstellen:
„?difficulty=2?maxplayers=6?adminname=horst?adminpassword=gulaschkanone“
Die Schwierigkeit ist 2 (0-Normal, 1-Hard, 2-Suicidal, 3-Hell on Earth)
Maximal können 6 Spieler den Server betreten.
Das webadmin-Passwort ist „gulschkanone“
und der webadmin-Name ist „horst“.

Webadmin ist nochmal ein besseres Interface zum ändern der Optionen des Servers.
Um WebAdmin nutzen zu können muss man folgendes tun:
Öffne „\KFGame\Config\KFWeb.ini“ mit dem normalen Texteditor.
In der Zeile wo „bEnabled=false“ steht, ändere das „false“ zu „true“.
Hier findest du auch weitere Einstellungen für WebAdmin.

Wenn der Server gestartet ist und du in deinem Browser die IP-Adresse deines Rechners und den Port 8080 eingibst,
z.B. so „192.168.178.12:8080„, kommst du zum Server Interface. Hier kannst du alles Einstellen in schöner, grafischer Form und du kannst auch mit Spielern auf dem Server chatten und sie bannen oder kicken.

Du kannst dir auch ein Batch-Skript schreiben um den Server automatisch mit den richtigen Einstellungen starten zu lassen.
Benenne es aber um, denn KFServer.bat wird bei Updates überschrieben.
Um die Updates automatisch, ohne ständiges eingeben bei SteamCMD, installieren zu lassen, schreibe die Befehle von oben in eine Textdatei und erstelle eine Batch-Datei, in der steht: „steamcmd.exe +runscript updatescriptkf2server.txt“.

Hier heißt die Textdatei „updatescriptkf2server.txt“. Du kannst sie auch umbenennen solange du das in der Batch-Datei auch geändert wird.

Eine txt-Datei zum Updaten könnte z.B. so aussehen:

// updatescriptkf2server.txt
//
login anonymous
force_install_dir ..\kf2server\
app_update 232130 validate
exit

Wie du siehst, sind das einfach nur nochmal die Befehle von oben.

Viel Spaß mit deinem KF2Server!

Android-Wear-Benachrichtigungen mit AppInventor senden

Mit IFTTT kann man auch mit AppInventor, der normalerweise keinerlei Benachrichtigungen senden kann, zumindest Android-Wear-Benachichtigungen senden. Dazu bedient man sich dem Maker-Channel. Dazu erstellen wir zunächst ein IF-Rezept, welches 2 per Maker-Channel übergebene Variablen an die Android-Wear übergibt. Dies ist zum einen der Text, der Angezeigt werden soll, und die URL zu einem Foto, welches als Benachrichtigungsbild verwendet wird. Dafür kann man entweder das hier eingeblendete Rezept benutzen, oder selber eins erstellen.

IFTTT Recipe: Show Notifications on Android Wear with #AppInventor connects maker to android-wear

Das war der einfache Teil. Jetzt müssen wir nur noch in AppInventor eine Funktion erstellen, die mit dem Maker-Channel kommuniziert. Die Maker-Variablen werden mittels HTTP-POST übergeben, und das in JSON-Form. Deshalb bauen wir uns eine kleine Routine, die zwei übergebene Variablen an den Maker-Channel sendet.

So sieht meine Lösung aus:

weargetter

Natürlich müsst ihr statt des großen schwarzen Zensurbalkens euren Secret-Key einfügen. Dann sollte alles funktionieren. 🙂

Intelligentes Zielen bei Spielen

In vielen Spielen sieht man Geschütztürme oder NPCs, die anscheinend sehr gut Zielen gelernt haben. Darum soll es in diesem Beitrag gehen, wie man auch am Titel unschwer erkennen kann.
Ich habe mich schon immer gefragt: Wie geht das? Wie kann man das als Algorithmus formulieren? Und kann ich das selber auch machen? In der letzten Woche bin ich nun auf eine Lösung gestoßen. Ich hatte mich an diesem Thema festgebissen, wollte es aber nicht Googlen, sondern selber herausfinden. Meine Idee bekam ich durch… naja… Mathe :/. Leider ist der Unterricht dich zu etwas nütze und das muss man sich erstmal eingestehen. Da ich so überaus intelligent bin, gehe ich an ein Gymnasium und dort gibt es nunmal auch diesen sagenumwobenen „Mathematik Unterricht“. Als Thema hatten wir Vektorrechnung und das kann man für das Programmieren grafischer Anwendungen sehr sehr sehr sehr sehr sehr sehr gut gebrauchen!
Meine Idee war es eine Flak (also für alle Nicht-N24-Gucker: ein Luftabwehrgeschütz.) so auf meinen Mauszeiger schießen zu lassen, dass sie ihn trifft, wenn das Projektil an der Maus ankommt. Sie musste also vor das Ziel schießen und dieses Vorziehlen wollte ich als Algorithmus fassen. Nach einigen Überlegungen kam ich auf folgenden Ansatz:

Die Kugel hat eine festgelegte Geschwindigkeit: in meinem Fall 10 Pixel/Einheiten pro Frame
Das Geschütz ist in der Mitte des Fensters, welches eine Abmessung von 800 mal 600 Pixeln hat.
Die Maus ist das Ziel und hat auch eine Gesschwindigkeit:
Diese lässt sich aus der Änderung der Koordinaten der Maus zwischen zwei Frames ausrechnen.

MausX-MausX_Vorher=AbstandX
MausY-Mausy_Vorher=AbstandY

Die Länge dieses Vektors, also die Geschwindigkeit ergibt sich dann so:
Geschwindigkeit²=AbstandX²+AbstandY2 (Für alle Angehörigen des Bildungsbürgertums: Das ist der Satz des Pythagoras.)
Die Wurzel aus Geschwindigkeit² ist logischer Weise die Geschwindigkeit.

Als nächstes Überlegte ich mir folgendes:
Vereinfacht gesehen, bewegt sich das Ziel (die Maus) auf einer Geraden, solange sie nicht ihre Richtung ändert oder der Nutzer die Geschwindigkeit der Mausbewegung ändert.
Nun wird jedes Pixel auf der Geraden, welches vor der Maus liegt, kontrolliert:
Der Abstand zu dem ausgewählten Pixel geteilt durch die Geschwindigkeit der Maus ergibt einen Wert.
Der Abstand zwischen Geschützturm und dem Pixel geteilt durch die Geschwindigkeit der Kugel (10) muss den gleichen Wert ergeben.
Hier nochmal als Skizze:
Skizze

Wie man sieht, passen die jeweiligen Geschwindigkeiten vier mal in den jeweiligen Abstand zum Vorhaltepunkt. Dieser Punkt wird also von der Maus und dem Projektil in vier Frames erreicht.

Ich habe mein Programm in Python geschrieben und es funktioniert gut. ABER nicht perfekt und das liegt daran:

-Die unendlich vielen Punkte der geraden können nicht alle durchgecheckt werden also lasse ich in meinem Programm insgesamt rund 100 Pixel vor der Maus kontrollieren. Deswegen schießt das Geschütz nicht immer sondern bleibt einfach stehen, wenn die Werte nicht genau übereinstimmen. Erst nach einer erneuten Bewegung der Maus findet das Geschütz wieder einen Punkt an den geschossen werden soll.

-Zwischen den einzelnen kontrollierten Punkten der Geraden könnten weitere passende Vorzielpunkte liegen, die aber übersprungen werden, da mein Check-Algorithmus nicht sehr viele Stellen nach dem Komma beachtet sondern immer eine Pixel-Einheit weiter springt.

-Das ganze Ding ist eine ungenaue Kiste, da ich kein Matheprofessor bin.

Insgesamt ist das Programm aber sehr gut gelungen und ich bin sehr zufrieden damit, denn es macht genau das was es soll: Treffen! Die meiste Zeit trifft es die Maus wirklich!
Man kann dann z.B. noch kleine Spielereien hinzufügen wie einen Lebensbalken der Maus oder die Munition des Turms begrenzen.

So sieht mein Endresultat aus:

preview

Oben ist ein Lebensbalken für die Leben des Spielers. Die Maus ist ein Ufo und in der Mitte ein einfach angedeuteter Geschützturm, der sich passend ausrichtet und dreht.

Ren’py: Spieldateien verschlüsseln

In den meisten Fällen will man bei einem Ren’Py Spiel, das für die Öffentlichkeit gedacht ist, nicht, dass Spieler einfach so in den Spieldateien rumwurschteln können. Zum einen würde es dem Spiel die Magie nehmen, wenn man jedes einzelne Asset von anfang an sehen könnte, man will aber vielleicht auch nicht, dass Leute das Werk verändern oder die Assets in ihren eigenen Spielen verwenden. Dafür bietet Ren’Py ein Tool an, mit dem sich die einzelnen Dateien in Archiven zusammenfassen lassen. Das Komandozeilentool archiver.exe wird leider mit den neueren Versionen von Ren’Py nicht mehr mitgeliefert. Um das Programm zu bekommen muss man sich also eine ältere Version, wie zum Beispiel die Version 5.0 von der Entwicklerwebsite herunterladen. Hier befinden sich im Hauptverzeichnis die Dateien archiver.exe und archiver.py.

image

Da neben der Datei Python23.dll auch eine komplette Python-Installation in einem abhängigen Verzeichnis benötigt wird, funktioniert das Programm meist nicht mehr, wenn man es aus dem  Ordner rausnimmt. Deshalb bietet es sich an, die zu archiverenden Dateien in den game-Ordner zu packen, wo sie dann archiviert werden können.
Das Programm archiver.exe wird über die Kommandozeile bedient. Der Aufruf erfolgt nach dem Syntax
archiver.exe Archivname Datei1 Datei2 Datei3 [Datein]
Der Archivname ist nur ein Bezeichner ohne Dateiendung, wie zum Beispiel images , bei der Angabe der Dateien können Auswahlparameter wie zum Beispiel .png , .jpg verwendet werden. Damit die Dateien auch vom Ren’Py-Spiel verwendet werden können, muss im init:-Block die Zeile
archives = [‚archivname‘,’archivname2′]
hinzugefügt werden. Die Script-Dateien müssen nicht individuell Kompiliert werden, beim Testen des Projekts werden die script.rpy-Dateien, die sich mit jedem Editor öffnen lassen, zu script.rpyc-Dateien kompiliert, die sich nicht mehr so einfach öffnen lassen. Ist alles erledigt, können alle Assets, und alle .rpy-Dateien gelöscht werden, woraufhin das Spiel fertig zum veröffentlichen ist. Zum Schluss sei noch erwähnt, dass die .rpyc-Dateien wirklich kompiliert sind, während die .rpa- und .rpi-Dateien wirklich nur Archive sind, die sich mit wenig Arbeit öffnen lassen. Allerdings schützt diese Methode wesentlich gegen das „casual browsing“ der Spieldateien durch Nutzer.