Research and Development 1/^Archief/2009-2010/07/Pilot/Concept

Uit Werkplaats
Ga naar: navigatie, zoeken

Het oorspronkelijke idee

Ons doel is om een spel te maken, in Java, wat zich focust op cooperatief werk. Voorlopig wordt het alleen over LAN. Het is licht gebaseerd op Command&Conquer Renegade, maar dan meer in de Real-time strategy richting. Spelers vormen teams en het spel begint. Het speelveld wordt een RTS-achtig gebied met 2 plekken voor basissen en een middenstuk. Spelers lopen rond met een character dat kan schieten, gebouwen kan bouwen en voertuigen produceren. Als het spel begint is er een setup-time waarin spelers alvast een begin kunnen maken, om rush-strategieen af te wenden. Spelers kunnen tijdens deze setup niet buiten hun basisterrein. Als de setup-time voorbij is openen de basistereinen en komt het middengedeelte vrij, wat weer een boel resources heeft om over te vechten. De grafische stijl wordt 2D top-down. Spelers kunnen ook in iets sterker dan normale voertuigen gaan en deze besturen. Als een speler een eenheid produceert, luistert deze alleen naar die speler. Het moet mogelijk zijn om eenheiden te schenken aan andere spelers.

Een aantal vragen die we kunnen onderzoeken:

  • Het schieten. Gaan we het via puur hitscan, puur projectielen (a la Battlefield), of een combinatie van die twee (a la Source Engine games) doen? En hoe implementeren we dat?
  • Het speelveld. Kunnen we iets bedenken zodat het telkens willekeurig gegenereerd wordt, of zelf mappen maken die dan niet veranderd kunnen worden?
  • De resources. Hoeveel zullen die er zijn, en waar zullen ze allemaal voor nodig zijn?
  • Restricties. Houden we de gebouwen binnen het basisterrein? Hoeveel eenheiden kan je bouwen? Zullen er ammunitierestricties zijn?
  • Hoe kan je een voornamelijk cooperatieve RTS maken die ook nog leuk is?

Het vernieuwde idee

Gezien het feit dat het bovenstaande idee hoogstwaarschijnlijk te veel moeite en tijd kost, hebben we besloten om het een en ander wat simpeler te maken. Op advies gaan wij gebruik maken van een simpele interface. Dit houdt in dat de commando's van de speler worden gegeven door middel van een console (text-based). De output en progressie van het spel wordt weergegeven door een simpele 2D raster-representatie met symbolen.

De gameplay-elementen blijven hoofdzakelijk hetzelfde; met 1 groot verschil: we hebben besloten om het spel te veranderen van Real-Time naar Turn-Based. Dit geeft ons een probleem minder: De netcode-synchronisatie. Door de teams een voor een te laten spelen hoeven we de server telkens maar 1 keer te updaten.

We hebben voorlopig besloten om een aparte server te maken voor het organiseren van de match. De multiplayer proberen we eerst lokaal uit in de pilot (hot-seat mode), en daarna kunnen we kijken naar netcode.


Gameplay

Doel van het spel

Het verslaan van de tegenstander door middel van het vernietigen van zijn/haar basis en eenheden.

Legers van een speler kunnen vijandelijke legers tegenkomen en aanvallen, of een gebouw (al dan niet verdedigd) tegenkomen.

Opdeling van taken

Het spel onderscheidt zich van de rest door de grote focus op teamplay. Dit wordt geforceerd door het opdelen van de taken in drie stukken. Iedere speler is kritiek:

  • Zonder Aanvaller kan de basis van de tegenstander niet worden aangevallen;
  • Zonder Verdediger biedt de eigen basis geen tegenstand tegen vijandelijke aanvallen;
  • Zonder Manager worden er geen grondstoffen gewonnen voor de Aanvaller en Verdediger.

Aanvaller

  • Produceerd units uit gebouwen en stopt deze in legers.
  • Kan legers naar vakken sturen om te scouten/aanvallen/daar te verdedigen.

Verdediger De verdediger regelt de verdediging van de basis en eventuele forward bases. Dit houdt in:

  • Het contrueren van turrets als gebouwen voor extra verdediging op die plekken.
  • Het bouwen van units in verdedigingslegers die gestationeerd worden in gebouwen

Manager

De Manager regelt de economie van het team. Dit houdt in:

  • Het verzamelen van grondstoffen
  • Het verdelen van de grondstoffen
  • Het zorgen voor een elektriciteitsvoorziening
  • Het zorgen voor genoeg opslagplaats voor de grondstoffen
  • Kan upgrades researchen om stats te verhogen, zoals max aantal punten per beurt en maximale legergrootte.

Doordat de taken van de leden van een team redelijk eenvoudig zijn, kunnen de beurten snel gespeeld worden.

Interface

De interface zal bestaan uit 2 onderdelen:

  • De grafische representatie van het slagveld als een grid met icoontjes
  • Een console om commandos in in te voeren en tekst als output weer te geven.

De grafische representatie wordt dus een grid, met aanpasbare grootte. Elk vierkantje van deze grid kan iets bevatten.

  • Een gebouw van een speler. Dit kan een driehoek zijn in een bepaalde teamkleur.
  • Een obstakel. Dit kan iets zijn als een rots en zorgt ervoor dat op die plek niets gebouwd kan worden. Kan worden weergegeven als een vierkant met een neutrale kleur (grijs bv.)
  • Grondstoffenbron. Dit kan een cirkel zijn, in een neutrale maar toch licht opvallende kleur (goud bv).

Het speelveld bestaat uit 3 gebieden. Twee gebieden die speciaal voor een spelersbasis zijn en waar de vijand niet kan bouwen, en een middenstuk met meer grondstoffen waar beide spelers kunnen bouwen.

De grid kan letters en cijfers als coordinaten gebruiken. Bv een gebouw staat op vak (12, AF). Dit kan in de commandos die gegeven kunnen worden meegegeven, zodat de spelers dingen direct kunnen richten.

Het consolevenster kan heel simpel zijn, met een invoerveld en een uitvoerveld van meerdere regels. Commandos moeten beginnen met '>', zodat ze te onderscheiden zijn van normale gebruikersinvoer. Deze normale invoer kan gebruikt worden als simpele chat.

De Omgeving

De omgeving bestaat dus uit een tweedimensionale grid van velden. Op dit veld zijn twee gebieden voor de basissen van de teams, en een midden-gebied waar iedereen kan bouwen en waar meer grondstoffen zich bevinden. Obstakels op het veld, voornamelijk in het middengedeelte, zorgen ervoor dat er op die plek niet gebouwt kan worden.

Grondstoffen ontginnen

Er zijn dus bepaalde velden in de grid die grondstoffen bevatten. Een team's Manager kan hier dan ontginningsgebouwen naast bouwen, die dan een bepaald aantal grondstoffen per beurt ontvangt. Dit gebeurt per gebouw, dus als een team twee gebouwen naast heeft staan, krijgt hij ook meer grondstoffen. Op dezelfde manier kan het vijandige team er ook een gebouw naast bouwen die dan ook grondstoffen ontvangt.

Het bouwen

Als een teamlid een gebouw bouwt, wordt het aantal grondstoffen van dat lid zijn grondstoffenvoorraad afgetrokken. Het gebouw bouwt dan over een aantal beurten tot het klaar is. Als het gebouw wordt vernietigd tijdens het bouwen, is de speler dus de grondstoffen kwijt. Het begin van het bouwen vereist dat er bouweenheiden van het hoofdgebouw van een team naar de plek worden gestuurd, wat ook eventjes duurt afhankelijk van de afstand. Een team heeft een beperkt aantal bouweenheiden.

Grondstoffenverdeling

De Manager beheert de grondstoffenontginning en ontvangt daarom ook initieel alle grondstoffen. Aangezien hij hier weinig mee kan, moet hij ze doorspelen naar de Verdediger en Aanvaller, die er dan units en militaire gebouwen kunnen bouwen. Dit vereist dus goede communicatie.

Militair

De aanvaller en verdediger beheren alle militaire zaken. Dit houdt dus in verdediging van gebouwen, het construeren van eenheid-producerende gebouwen zoals een Barracks, het construeren van turrets, en het produceren van eenheiden voor aanval en verdediging.

De verdediger kan turrets plaatsen op lege vakken in de grid. Deze worden net zo gebouwt als normale gebouwen, maar kunnen zelf meehelpen in een aanval op dat blok en geven een lichte boost aan eenheiden in dat blok. De verdediger kan ook gebouwen bouwen die gevechtseenheiden produceren. Verder kan de verdediger eenheiden van een blok naar een ander sturen om dat te versterken. Dit kost natuurlijk ook tijd.

De aanvaller kan ook gebouwen bouwen die gevechtseenheiden produceren. Verder kan hij eenheiden produceren en in aanvalslegers combineren. Deze aanvalslegers kunnen dan worden gebruikt om aanvallen uit te voeren op blokken.

Fog-of-war

Elk team begint het spel met een basisgebied dat al helemaal verkend is. De rest van het speelveld is nog niet verkend, en dus onder de fog-of-war. De aanvaller kan aanvalslegers sturen om te scouten naar een bepaald blok. Dit kost ook weer tijd, omdat het in weze een aanval is als er toevallig vijandelijke gebouwen op die plek zijn. Als het leger overleeft wordt informatie over dat vak en enkele omliggende vakken verkregen, die dan de kaart invullen voor die blokken.

Scouten kan ook grondstoffenplekken onthullen, die hiervoor dus niet niet bekend op de kaart waren.

Als een blok verandert nadat er gescout is, bijvoorbeeld als er een nieuw gebouw geplaatst is, weet de vijand dit dus niet totdat ze weer aanvallen/scouten naar die locatie.

Turn-based

Omdat het turn-based is, is er een systeem van kosten nodig dat bepaald wat een team allemaal kan doen in een beurt. Elke persoon in een team heeft een bepaald aantal punten om iets mee te doen. Als deze punten op zijn, of als de persoon dit wil, wordt de beurt doorgegeven aan de volgende persoon in dat team. Een geschikte volgorde lijkt me Manager - Verdediger - Aanvaller.

Alles kost punten, afhankelijk van de afstand. Aanvallen naar een nabijgelegen punt kosten dus minder dan aanvallen naar een verder weg gelegen punt. Het moet mogelijk zijn om alle mogelijke acties te kunnen uitvoeren in 1 beurt. Dus een aanval met de hoogst mogelijke kosten moet precies binnen het totale aantal punten vallen.

Netwerk

We waren van plan om te beginnen met een hotseat versie, wat perfect mogelijk is aangezien het turn-based is. Als we kunnen willen we net-support voor LAN netwerken toevoegen, met een centrale serverapplicatie die alles regelt op een pc.