Inlägg 4

Trowl.

Stress och hur det påverkar dig som spelare.

I vårat spel har vi ingen health bar som traditionella spel brukar ha eller liv i form av hjärtan som försvinner när spelaren tar skada.

I Trowl så har spelaren en mätare som konstant ökar som kallas stress.

Stress ökar hela tiden under spelets gång med en konstant hastighet och ifall spelaren blir träffad av en fiende så skjuter stress upp med x procent. Samma ifall en av owletsen blir träffad av en fiende.

För att sänka din stress så plockar spelaren upp owlets eller skjuter projektiler på fiender.

När spelarens stress mätare blir full dör spelaren och spelet är över.

För att förstärka för spelaren att deras stress håller på att bli för hög så har vi lagt in hjärtljud som ökar i volym medans alla andra ljud sjunker i volym samt en pixel shader som tonar ner alla färger till svart/vitt.

Pixel shadern är simpel den tar en textur som parameter och ändrar färgerna på den texturen till svartvitt med algoritmen :

Gray = (Red * 0.299 + Green * 0.587 + Blue * 0.114)
shader

och sedan sätter vi texturens rgb värden till Grey.
Detta kallas Luma metoden för gråskala färger.

Det finns även en väldigt simpel metod för detta som är:

Grey = (RED, GREEN, BLUE) / 3

vilket kallas "Averaging" men detta ger ingen vidare realistisk gråskala.

shadern är kodad i glsl (opengl shading language) vilket jag aldrig tidigare
jobbat i så det var väldigt intressant att läsa om och lära sig om hur man kodar
shaders.

För att sedan använda shaders i sfml så gör man en sf shader variabel. Läser in
shader filen med funktionen loadfromfile och sätter vilken sorts shader det är 
Fragment(pixel) eller Vertex shader.

Sedan sätter använder jag shader.setParameter funktionen för att shadern skall veta vilken textur den skall använda och här skickar jag in sprite texturen på det 
jag vill gråskala.

Till sist så skickar man shadern med i draw funktionen som parameter t ex
sf::renderWindow window;
window.draw(randomsprite, &shader);
svårare än så var det inte. 
Det finns säkert ett bättre sätt att göra detta på men tyvärr var detta den enda 
lösningen jag kunde.
Jag har dock ett problem jag inte lyckats lösa vilket är att shadern att tona allttill gråskala utan den sätter allt till grått direkt.
Jag har ännu inte lyckats hitta någon hjälp på detta men skall fortsätta utöver
resten av det som skall implementeras att läsa om GLSL och förhoppningsvis få det klart till betan.

About joni nikander

2015 Game Design