spektral/pybattle — Issue #11: Hur fan ska vapnen funka?
Author: spektral
Created: 2011-10-31 18:15:02+00:00
State: open
Labels: Priority

Jag skapar en "tråd" här för det är det bästa forumet vi har länkat till spelet. Det skulle vara bra om vi kunde komma upp med en bra design för detta, eftersom det kommer att vara en mycket central del av spelet.

Diskussionen hittils:

Jag:
>[...] för nu kan inte klienten hantera entities servern inte har koll på, exempelvis explosionsanimationen.

larsemil:
> [...] Jag tänkte att explosion visst är en sådan sak som servern vill ha koll på eftersom jag tycker att de objekt som är i närheten ska kunna ta skada av explosionen. Men det kanske går att göra ändå?

Jag:
> En explosion är skild från en vapenträff, det är vapnet som ska orsaka skadan. Explosionen är enbart estetisk. Kan dock hända att servern lär hålla reda på den ändå.

larsemil:
> Jag är inte enig här. Jag menar att en vapenträff är det som drar skada från ett objekt. När det objektet sen dör så kan jag tänka mig följande scenarion:
> 1. Att det blir en stor eller liten explosion beroende på hur mycket energi som finns kvar i objektet som dör.
> 2. Minor / bomber, där själva explosionen är det som ska göra skada.
> 3. Att ett objekt som inte blivit träffat av missilen som står bredvid ett annat ändå kan ta skada av att den första förintas. Om två bilar kör i konvoj och den ena råkar köra på en mina, bli besjkuten eller får syraregn på sig så den exploderar så ska den andra kunna ta skada av den förstas explosion.
>
> Sen skulle man ju kunna skilja på fysiska entities och animationer(grafisk entitiy) i viss mån om man vill.

Jag:
> Jag tror vi snackar om samma sak fast på lite olika sätt, för övrigt härligt att ha lite diskussioner om upplägg.
>
> Som jag tänker så ska allting struktureras upp och delas in i sina kategorier för att få objekt med tydliga ansvarsområden. Jag tror det är bäst att ha en "Warhead"-klass som är väldigt generell, och som hanterar att skada saker. Om ett fordon får någon form av härdsmälta och exploderar, så blir det rent programmatiskt att en Warhead av typen "härdsmälta" avfyras på den positionen som fordonet befinner sig på.
>
> En lista över exempel på stridsspetsar och effekt:
> Warhead - Effekt
> WarheadHärdsmälta - Förintar det objekt som avfyrade vapnet, och skadar alla andra objekt inom en viss radie, med skada beroende av avstånd och hur mycket bränsle som fanns i deet avfyrande objektet.
> WarheadMine - Egentligen väldigt lik härdsmälta, där det avfyrande objektet är en mina. Antagligen konstant skademängd till skillnad från "Härdsmälta".
> WarheadBullet/Shell - Skadar det första objektet den träffar, minskar det avfyrande objektets ammunition med 1.
>
> Typ något i den stilen. Dessa skapas hos servern, klienten tar emot dem, och skapar en animation på samma plats, exempelvis en explosion. Servern har ingen som helst kännedom om explosionsanimationen, för den påverkar ingenting utom vad spelaren ser. Warhead är väl egentligen det som heter Missile för oss just nu. Ett annat namn kan ju vara Projectile.
>
> Warheads är även helt separata från Weapon, förutom att varje Weapon antagligen äger en lista av Warheads, som fylls när Weapon avfyras. Typ WeaponCannon.
>
> Man kan också diskutera om en kula och skadan den gör är separata grejer. Då får man alltså Vapen -> Kula -> Skada. (NåntingFarligt -> Härdsmälta -> FetExplosion)

Jag skulle vilja tillägga att attacksystemet ska väl likna RTS-spel, typ Warcraft, Command and Conquer etc. där man anger en enhet som mål, och fordonet attackerar automatiskt. Detta eftersom det kommer att finnas ett flertal olika vapensystem ombord och det är inte så hett att kontrollera dessa direkt via tangentbordet.

Anledningen att det ser ut som det gör för tillfället är väl egentligen bara för att göra en intressant multiplayer-demo innan man biter tag i nästa milstolpe (som inte finns än).