11.07.2015 Views

Project Report - Tank Wars

Project Report - Tank Wars

Project Report - Tank Wars

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

MITSUBISHI IGBT MODULESCM400HU-24HHIGH POWER SWITCHING USEINSULATED TYPEAbsolute Maximum Ratings, T j = 25 °C unless otherwise specifiedSymbol Ratings UnitsJunction Temperature T j -40 to 150 °CStorage Temperature T stg -40 to 125 °CCollector-Emitter Voltage (G-E SHORT) V CES 1200 VoltsGate-Emitter Voltage (C-E SHORT) V GES ±20 VoltsCollector Current (T c = 25°C) I C 400 AmperesPeak Collector Current (T j ≤ 150°C) I CM 800* AmperesEmitter Current** (T c = 25°C) I E 400 AmperesPeak Emitter Current** I EM 800* AmperesMaximum Collector Dissipation (T c = 25°C) P c 2100 WattsMounting Torque, M6 Main Terminal, M6 Mounting – 3.5~4.5 N · mMounting Torque, M4 Terminal – 1.3~1.7 N · mWeight – 450 GramsIsolation Voltage (Main Terminal to Baseplate, AC 1 min.) V iso 2500 Vrms* Pulse width and repetition rate should be such that the device junction temperature (T j ) does not exceed T j(max) rating.**Represents characteristics of the anti-parallel, emitter-to-collector free-wheel diode (FWDi).Static Electrical Characteristics, T j = 25 °C unless otherwise specifiedCharacteristics Symbol Test Conditions Min. Typ. Max. UnitsCollector-Cutoff Current I CES V CE = V CES , V GE = 0V – – 2 mAGate Leakage Voltage I GES V GE = V GES , V CE = 0V – – 0.5 µAGate-Emitter Threshold Voltage V GE(th) I C = 40mA, V CE = 10V 4.5 6 7.5 VoltsCollector-Emitter Saturation Voltage V CE(sat) I C = 400A, V GE = 15V, T j = 25°C – 2.9 3.7 VoltsI C = 400A, V GE = 15V, T j = 125°C – 2.85 – VoltsTotal Gate Charge Q G V CC = 600V, I C = 400A, V GE = 15V – 1500 – nCEmitter-Collector Voltage* V EC I E = 400A, V GE = 0V – – 3.2 Volts* Pulse width and repetition rate should be such that the device junction temperature (T j ) does not exceed T j(max) rating.Dynamic Electrical Characteristics, T j = 25 °C unless otherwise specifiedCharacteristics Symbol Test Conditions Min. Typ. Max. UnitsInput Capacitance C ies – – 60 nFOutput Capacitance C oes V CE = 10V, V GE = 0V – – 21 nFReverse Transfer Capacitance C res – – 12 nFResistive Turn-on Delay Time t d(on) V CC = 600V, I C = 400A, – – 250 nsLoad Rise Time t r V GE1 = V GE2 = 15V, – – 350 nsSwitch Turn-off Delay Time t d(off) R G = 0.78Ω, Resistive – – 350 nsTimes Fall Time t f Load Switching Operation – – 350 nsDiode Reverse Recovery Time t rr I E = 400A, di E /dt = -800A/µs – – 300 nsDiode Reverse Recovery Charge Q rr I E = 400A, di E /dt = -800A/µs – 2.2 – µCThermal and Mechanical Characteristics, T j = 25 °C unless otherwise specifiedCharacteristics Symbol Test Conditions Min. Typ. Max. UnitsThermal Resistance, Junction to Case R th(j-c) Q Per IGBT Module – – 0.06 °C/WThermal Resistance, Junction to Case R th(j-c) D Per FWDi Module – – 0.09 °C/WContact Thermal Resistance R th(c-f) Per Module, Thermal Grease Applied – 0.02 – °C/WSep.2000


◦ Ha stöd för programmerbara AI via kommandoraden eller GUI.• Spectator client◦ [IMPL] GUI-baserad klient som ansluter till servern och visar helaspelvärlden◦ [IMPL] Är passive, d.v.s. kan inte blanda sig i spelet på något sätt alls◦ [IMPL] Enkel chat för att kunna prata med andra spectators• Game feature enhancements◦ [IMPL] Kunna hantera mer än två (2) tanks◦ Ha stöd för lagspel◦ [IMPL] Fler sensorer, t.ex. ljud◦ Olika vapen◦ Sköldar som kan aktiveras under en begränsad tid◦ [IMPL/DUPLICATE] Batteri som sakta laddas upp och ur av olikakommandon. I princip = action points.Utöver ovanstående har det även tillkommit några features som inte fanns i denursprungliga kravspecifikationen.• Extra-extra features◦ [IMPL] Chat för spelarna◦ [IMPL] Varje spelare har actionpoints (AP) vilket medför att man kanutföra mer än en action per runda◦ [IMPL] Varje tank har en viss mängd liv och det krävs flera (>1) skottför att döda en tank◦ [IMPL] GUI för att starta servern◦ [IMPL] Stöd för flera olika banor. Vid start av servern kan man väljabana3. ModellNedan beskrivs kortfattat hur källkoden för spelet är upplagd. Det går att sammanfattadet hela som två server-klient-lösningar, en som tar hand om spelet och en som tarhand om chatten (se figur 1 nedan).Figur 1. (namnen i figuren är paket-namn)Utöver de paket som syns i figur ett tillkommer ytterligare fyra paket varav en delbeskrivs i de kommande tre styckena. Projektet har utgått från ett Model-View-Controller-perspektiv (MVC) och därefter byggt ut det för att passa en


MailboxReaderThread.java - Detta objekt ligger hela tiden och pollar Mailbox på ettnytt meddelande. När den lyckas hämta ett nytt meddelande anropar det sendToAll()-metoden i Monitor.java som då ser till att meddelandet skickas till samtliga klienter.3.3.2 ChatClientReaderThread.java - På klientsidan har varje klient ett sådant objekt som ligger ochpollar efter nya meddelanden från servern. När ett meddelande mottages skickas vidaretill ClientGUI.java och visas i chat/logg-fönstret.4. AnvändarhandledningDet finns två applikationer som ingår i vårt projektarbete: Servern (med en grafisklauncher) och en grafisk klient.4.1 ServernServern startas från terminalen genom att placera dig i mappen där du har sparat<strong>Tank</strong><strong>Wars</strong>_server.jar (samt mappen "maps") och sedan köra följande kommando:$ java -jar <strong>Tank</strong><strong>Wars</strong>_server.jarEfter att den startats bör det se ut så här:Antal spelare (minimum 2), port (som om inte annat anges är 30000) och karta kanväljas. För kartor kan antingen ett antal förprogrammerade väljas, eller en egen design,eller en slumpmässig labyrint med en viss bredd eller höjd.4.1 KlientenKlienten startas från terminalen genom att placera dig i mappen där du har sparat<strong>Tank</strong><strong>Wars</strong>_client.jar och sedan köra följande kommando:$ java -jar <strong>Tank</strong><strong>Wars</strong>_client.jar.


Klicka därefter knappen Connect för att ansluta till servern. Anslutningsdialogen ser ut såhär:Adress, port och användarnamn kan skrivas in på sedvanligt sätt. Man kan välja attansluta sig som antingen en spelare (och förhoppningsvis få ta kommandot över enstridsvagn), eller som en en åskådare (spectator). Servern är begränsad till det antalspelare den startades med, medan ett godtycligt antal åskådare kan ansluta. Klicka OKför att ansluta, vilket fryser GUIet tills anslutningen lyckats eller misslyckats. Resultatetav anslutningsförsöket skrivas ut i loggen i huvudfönstret:När man anslutit befinner man sig i lobbyläge fram tills dess att servern kopplat in ettfullständigt antal spelare, varvid spelet startar automatiskt. Huvudfönstret förstoras då


och visar en "karta" som visar spelvärlden. Om man är en åskådare syns hela kartanfrån start och alla spelares drag spelas upp med automatik. Är man en spelare synsenbart en enda ruta på banan där den egna stridsvagnen står:Du kan förflytta dig över kartan genom att hålla ner vänster musknapp och dra runt den.Zooma in och ut genom mushjulet. Både åskådare och spelare kan göra detta. Åskådarekan inte göra speciellt mycket mer än så. Skulle grafikomritningen av kartan låsa sig(pga. en bugg i Swingklassen Timer), dra runt på kartan så startar den igen.Det finns tre olika typer av terräng på kartan: Öppen terräng, väggar och "hål". Väggarkan inte köras in i. Öppen terräng kan köras på utan problem, medan hål orsakar förlustav 10% liv samt att stridsvagnen får står över två rundor. Terrängen ser ut så här:Öppen terräng,VäggHålFörutom stridsvagnar finns det även "ljud"-notikationer som innebär att enfiendestridsvagn antingen hördes skjuta eller att den hördes bli träffad.LjudnotifikationStridsvagn (riktad mot öster)Som spelare kan man nu klicka på knappen Orders för att öppna orderfönstret:Det är viktigt att notera att spelarna servas i turordning, vilket innebär attorderkommandona inte är tillgängliga förrens det står att det är din tur. I fönstretindikerar "Turn: Opponent" att det är en motspelares tur att utföra kommandon. Denna


text ändras till "Turn: Yours" när det är spelarens tur att utföra kommandon (se nedan).Vid varje nu tur får spelare 3 nya action points (AP) att spendera på kommandon.Antalet AP spelaren har kvar att spendera visas i fönstret ovan med texten "AP's left: 3".Kommandona förklaras i tabellen nedan.OrderSymbolifönstretLEFT < 1 APRIGHT > 1 APFORWARD ^APkostnadBeskrivning1 APLOOK Look 2 APFIRE Fire! 3 APRoterar stridsvagnen90° moturs(vänster)Roterar stridsvagnen90° medurs (höger)Förflyttarstridsvagnen en rutaframåt, givet attdenna ruta inte ärockuperad av enannan stridsvagneller är en vägg.Avslöjar samtligarutor fram tillnärmaste vägg,utgående frånstridsvagnensposition och riktning.Skjuter fyra rutorframåt, utgåendefrån stridsvagnensposition och riktning.Den närmastestridsvagnen förlorar30 liv.WAIT Wait 0 AP Stå över tur.ÖvrigtAtt skjuta avslöjar spelarensposition till andra spelare inom ett5*5 rutors område runtstridsvagnen. Att bli beskjutenavslöjar spelarens position tillandra spelare inom ett 3*3område runt stridsvagnen.Om inga AP har spenderats underturen får spelaren till nästa tur 2extra AP, till ett maximum av 7AP.Spelet fortsätter tills bara en stridsvagn fortfarande fungerar varvid vinnaren informerasoch får se hela kartan. (Alla andra får också se hela kartan så fort deras stridsvagnarförstörts.)För att avsluta kan huvudfönstret helt enkelt stängas ner.


5. UtvärderingVår arbetsmetodik har varit rätt agil, och vi har inte planerat speciellt mycket förutomsjälva kravspecen och protokollbeskrivningen (som ändå ändrades en del underprojektets gång).Projektdiskussioner har i huvudsak förts via GoogleWave, vilket fungerar bra menförutsätter att folk har tid att logga in och läsa vad som skrivs. Därför har mötenfortfarande varit ytterst nödvändiga. Mot slutet av projektet har vi dessutom haft ett parmöten där vi provspelade spelet, letade buggar och korrigerade dessa. Att sittatillsammans och arbeta med buggfixar och finjusteringar var riktigt produktivt.Arbetet delades upp mellan oss tre projektmedlemmar mestadels baserat på vårarespektive förkunskaper. Det visade sig dock att detta resulterade i en något skevarbetsfördelning då klient-GUIt tog ganska mycket tid precis som spellogiken i servernmedan chatten och grundmodellen inte var riktigt lika tidskrävande. I slutändan är viändå nöjda med produkten och allas arbetsinsats, men fler fysiska möten hade nog varitnödvändiga för att bättre hålla koll på arbetsfördelningen.Protokollkommandona beskrevs väl i sig, men även ordningen i vilken de kommer frånservern skulle ha specificerats. Avkodningslogiken blir i klienten i flera fall betydligt merkomplicerad om viss information från servern kan ankomma i godtycklig ordning. Förnärvararande skulle det vara rätt svårt att implementera en annan server eller klientenbart från protokollspecifikationen av denna anledning.Även om protokollet (svaret på frågan hur?) var väldefinierat redan från början skulle vitänkt mer på var kommunikationen skulle ske. Under större delen av projektet utfördesall kommunikation på en kanal. I slutet när chatten skulle implementeras framgick dettydligt att flera kanaler behövdes för att kunna utföra även detta oberoende avturordningen i spelet. Man bör alltså överväga antalet kanaler tidigt i designarbetet,genom att ta reda på vilken kommunikation som behöver ske parallellt.6. ProgramlistorKällkoden till <strong>Tank</strong> <strong>Wars</strong> går att hitta antingen på projekthemsidan eller i vårprojektmapp på skolans nätverk:• http://users.student.lth.se/e03mo/eda095/page3.html.• /usr/local/proj/eda095/eda09505/eda095proj/

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!