torsdag 20 februari 2014

Overheat och enemies.

Den här veckan har jag suttit och pysslat med en hel del olika saker, bland annat med ett vapen heat system som håller koll på om vapnet kan skjutas eller om det behöver kylas ned. Det hela har en mängd små delar som var och en utgör en viktig del för att överhettningen ska fungera som den borde. Dels har vi variablerna som vårat player object håller koll på så som maximala mängden värme som vapnet kan klara av, mängden värme i vapnet för tillfället och om det har blivit överhettat (om värmen har gått upp till max). Sen har vi i våran game-loop kodbitar som börjar med att uppdatera det visuella, kollar först hur mycket värme som finns i vapnet för tillfället, sedan jämför detta med vapnets maximala värme och ritar ut en del av värme mätaren. Sedan går den vidare och undersöker om värmen är över noll och i sådant fall sänker den värmen lite. Sedan om något skulle gå fel och värmen skulle bli negativ så ändras den till 0. Jag har också lagt in lite kod i delen av koden som hanterar skottlossningen. Där lade jag in några rader som gör att värmen ökar så länge som spelaren skjuter. Anledningen till att vi lade in detta system var att utan det kunde man hålla nere vänster musknapp och fortsätta skjuta i all oändlighet, vilket inte var särskilt utmanande och utan utmaning – inget spännande spel. Vilket skulle i sin tur eliminera halva meningen med att göra spel, för vem vill spela ett spel som saknar utmaning? Troligtvis inte väldigt många. Dock finns det ju även sådana personer ute i världen och till dom har vi planerat lite intressanta grejer som har med uppgraderingarna att göra.

Jag har förutom att pyssla med värmesystemet också fixat lite med fienderna. Jag började med att fixa en extremt enkel pathfinding, dvs att fienderna kollar om spelaren är närmare än 400 pixlar så vänder sig fienderna mot spelaren och börjar vandra mot honom/henne. Skulle fienderna komma närmare än 50 pixlar börjar dom kasta lera på spelaren och vid 10 pixlar kvar stannar dom. Detta lade vi in för att kunna kontra en väldigt mysko bugg vi hade i början av projektet. Denna bugg hände när två fiender hamnade på exakt samma position och resulterade i att båda två försvinner mystiskt.

Men nu tror jag att jag har skrivigt tillräckligt, time to code once more.

2 kommentarer:

  1. Kul att du fick till värmesystemet som du ville ha det. Ett tips är att försöka få många att speltesta tidigt så att ni kan hitta rätt balans mellan hur fort tvättsvampskastaren överhettas, hur fort den svalnar innan den överhettats och hur fort den svalnar när den väl blivit överhettad.

    SvaraRadera
  2. Hallå!
    Utifrån vad du har skrivit så antar jag att ni bara kommer att ha ett vapen i spelet för spelaren? Har ni en egen klass för vapnet eller för att skjuta?
    Ifall ni funderar på att ha flera olika typer av vapen (semi-auto, shotgun, burst, etc) så skulle jag föreslå att ni gör en klass Vapen och där håller reda på allt som har med vapnet att göra: rate of fire, fire pattern, damage, övehättningens värden: nuvarande värde, övre gräns och dess nerkylningstakt. Då slipper ni ha kod för skjutning och överhettning utspidda över flera delar av koden, utan ni har den samlad på ett ställe så att det är lätt att hitta och ändra på ifall ni skulle behöva det vid ett senare tillfälle.
    Du skrev även att ni hade ett problem med att fiender försvann när dom gick in i varandra, hände det kanske bara när spelaren stod stilla och dem fick samma position som spelaren?
    I ett spel som jag gjorde på gymnasiet så stötte jag på ett liknande problem. Det uppstod när fienders position var på samma position som spelaren. Alla fiender kollade hela tiden avstånder mellan sig själv och spelaren, och sedan dividerade med det avståndet för att räkna ut något (kommer inte ihåg va det va). Men ifall spelaren och fienden va på samma punkt så blev avståndet noll, och är avståndet noll och man försöket dividera med det så kommer konstiga saker hända.
    Så, nu för tiden, varje gång jag dividerar något med en variabel, så har jag en if-sats som ser till att det inte är noll :-)
    Och en sista sak, skulle ha varit bra med en bild också, så att man hade kunnat se antingen del av kod eller det visuella med överhettningen.

    SvaraRadera