In diesem project lerne ich über den frame buffer!
readme ist auf dem stand vom 07.08.2023 um 00:50 Uhr
- Linux ich empfele Linuxmint für windows nutzer
- NodeJS
- APlay (für das wiedergeben von sounds)
- console (TTY 1 - 6)
- frame buffer schreib berechtitung erlangen durch
sudo usermod -aG video $USER; sudo reboot
oder durch root berechtigungen fbset
um informationen über den frambuffer zu erlangensudo apt intall fbset -y
wird nicht benötigt ist aber für ungewönliche bildformate empfolen
einfach npm install
eingeben dadurch werden folgende befehle ausgeführt:
- alle in der
package.json
festgelegten module werden innode_modules
abgelegt. fbset
wird mit hilfe vonapt
insterliert.- sie bekommen die gruppe
video
mitusermod
zugeteilt diese benötigen sie um auf/dev/fb0
WARNUNG: dies wird erst nach einem neustart übernommen. - es wird der
log/
ordner erstelt. npm run init
wird am ende noch ausgeführt dies erstellt die config datei mit ihrem screen configuration und baut diechars.json
=>compressedCharacterMap.bin
.
zum starten einfach npm start
oder ./main.js
oder sudo ./main.js
alternativ kann auch statt ./
node
verwendet werden.
zum abgleich mit github npm run update
eingeben dadurch wird folgender code ausgeführt:
git pull
: das herrunterladen von github servernnpm update
: neue module insterlieren und auf den neuesten stand bringennpm run init
: fals sich das formart der config.json geändert hat dieses erneuern (einstellungen werden beiberhalten in den meisten fällen)
config.json
: enthält alle wichtigen infos kann mitnpm run init
erstellt werden denn diese datei wird immer benötigt wenn mit dem frame buffer zusamm gearbeitet wird!chars.json
: enthält die bustaben/zeichen die angezeigt werden können (code by LFF5644)cls.sh
: leert framebuffer und seubert bildschirminit.js
: definirt config.json und bautchars.json
=>compressedCharacterMap.bin
simpleThing.js
: zeichnet ein 100*100 quadrat auf den bildschirm (code by chatGPT)playWithChars.js
: erhält als parameter ein charachter in der chars.json und gibt diesen ausoverwriteFB.js
: ist eine endlos schleife wo einfach jeder pixel eine andere fabe hatSTRG + C
to exitmain.js
: ein kleines spiel wo man einen spieler mit den pfeiltasten bewegen kann und mitt
alle bustaben auf dem bildschirm ausgibt und mitr
wird diechars.json
neu geladen und die bustaben erneut angezeigt mitq
wird es beendet und inlog/main.log
wird eine log datei ersteltinstall.sh
: wird von npm aufgerufen wenn mannpm install
eingibtupdate.sh
: wird von npm aufgerufen wenn mannpm run update
eingibt
- game mit spieler
- spieler glitzt nicht aus dem spielfeld
- spieler kann irgenwelche sachen aufsammeln
- counter wie viele sachen gesamelt wurden
- spieler beckommt eine art
hitbox
- spieler und objekte bekommen eine textur
- textur ist nicht enfabig
- textur
size
parameter nutzbar - textur fabe ist dynamisch (das rgb
a
byte nutzen) - realistische & gute texturen ausdenken
- spieler fabe auswählbar
- sounds hinzufügen (mit
play-sound
modul) - multiplayer mit mehreren spielern
-
raw tcp
nichtsocket.io
nutzen für mehr speed - spieler können nicht ineinnander glitzschen
- es kann text angezeigt werden
- zeichen sind nur so groß wie sie sein müssen
- zeichen werden gebaut
build
und nicht neu berechnet bzw es wird nicht jedes mal geguckt ob und wie vieleemptyRows
das zeichen hat - 1px = 1bit nicht byte!
- compertiebel mit 8 bit aka. 1 bpp geräten
- compertiebel mit 8 bit aka. 1 bpp geräten (NO BUGS!!! CURRECT COLORS!)
- compertiebel mit 24 bit aka. 3 bpp geräten
- compertiebel mit 32 bit aka. 4 bpp geräten
- build charackters =>
init.js
- add numbers to chars.json
- es werden screens/desktops/views erschaffen zb game, menu, exit
- Hauptmenu erstellen
- menus dynamisch bearbeiten und nicht überschreiben
- noch mehr Herausfoderungen schreiben