Håller just nu på att jobba på min nya idé. Det är ett spel, och det finns ett läge i spelet som kallas för 'free mode'. I detta läge kan man använda en penna som mållar ut terräng direkt i spelet och skapa object osv, lite som en map builder alltså, men du är mitt i spelet när du bygger.
Först så hadde jag bara en vit surface där jag ändrade färgen av pixlarna till svart när jag 'målade' dem. Och då skötte jag också kollisionen genom att kolla färgen på pixlarna och använde masks för objekten. Det var riktigt effektivt, det tar ju nästan inget minne alls! och är riktigt snabbt.
Men sen när jag började utveckla min idé så kom jag fram till att jag var tvungen att använda kollisions boxar istället. Så jag använde en liknande kollisions kollande som lazyfoo ( för er som vet om hans sida ). Det funkar bra. Men nu har objektet som funkar som parent för alla objekt massor av funktioner för att alla objekt ska funka med varandra. Och då jag inte kör med pixel kollision längre så fick jag skapa ett objekt för terrängen, så det är nu mer som ett tilebaserat spel.
Jag har fixat terräng objekten så de målar ut sej på en surface när de skapas och tar bort sin bild när de dör. Det gör så att jag inte behöver måla ut dem varje uppdate.
Men problemet kommer nu:
Jag har vatten ( mer som partiklar men de har objekt som parent ) som förut kollade om det var en kollision till höger under den ( alltså kollade färgen på pixeln ) och inte var en till vänster under den. Om det var sant så började den röra sej ditåt, så det såg ut som den ran över kanter och så när den var nära en.
Men nu när jag har boxar istället så måste jag kolla 5 kollisioner bara för att kunna se om vattnet ska börja 'rinna' eller inte. Det gör att jag knappt kan ha något vatten alls utan att det börjar lagga när vectorn för alla objekt blir större. Förut kunde jag lätt ha över 1000 vatten partiklar utan att det märktes över huvudtaget. Nu kan jag ha runt 50 innan det börjar lagga.
Så vilka lösningar verkar bäst?:
1. Göra en egen vector för terrängen där jag inte kallar på uppdate och draw mm för dem då de endå så är tomma.
2. Skapa ett nytt objekt för terrängen där de inte är childs till object så de bara behöver en constructor, destructor, och funktion för att returnera sin kollisions box. ( Gör jag detta kan jag lägga till andra roliga funktioner senare om jag känner för det, samt olika sorterst terräng ).
3. Göra en vector för massor av kollisions boxar och bara färga surfacen där jag annars bara målar terrängen där jag placerar boxen ( då behövs inga objekt alls och de tar knappt något minne! ).
4. Dela in alla objekt i olika vectors, alltså allt är olika zoner, om ett objekt är i en zon så kollar den bara med de objekt som är i vectorn för den zonen. Och kanske de zonerna som är runt den zonen. Detta blir rätt så effektivt skulle jag tro, men har alldrig sett / testat det förut.
Detta är de ideér jag har just nu, men hadde massor i skallen förut, men glömde bort dom :( Lägger till dem om jag kommer på dem igen. Säg gjärna om ni har andra smartare lösningar. Vill ha den bästa lösningen och minst kostsamma lösningen ( framför allt så lite lagg som mörjligt och i andra hand lite minne ).
Ingen status