PDA

Volledige versie bekijken : Enkele game development vragen


hoplite112
%Europe/Berlin %906 %2009, 22:45
Ik ben sinds 3 weken geleden (tijdens de zomervakantie in Spanje, had niks te doen ;) ) begonnen met een vrijetijds project;
Een RPG maken in Flash met AS3 om mijn code kennis voor school (GameDevelopment) een beetje bij te houden.
Ik heb de basis al, zoals schetsen, het hoofdmenu, een intro film e.d.
Enkele monsters zijn ook al digitaal ingewerkt en hebben de desbetreffende animaties (stilstaand, geraakt worden, aanvallen e.d.), maar ik zit met een paar problemen qua stats en acties die ze uit moeten voeren.

Voorbeeld 1:
We nemen een monster, waarvan het raakvermogen (Hitrating) 84% is.
Het enige probleem is nu dat ik niet weet hoe ik dit goed kan nabootsen.
Heb gezocht op google, hulp-functie van Flash en andere plekken, inclusief hier, maar heb niks gevonden.
Dus hoe kan ik het best een aantal procent bepalen?

Voorbeeld 2:
Het 2e probleem is het gebruiken van vaardigheden. Niet zozeer het basisgebruik, maar meer onder specifieke situaties.
Veel van mijn monsters hebben technieken die ze gebruiken als bijvoorbeeld hun HP onder een bepaald aantal komt.
Neem dit bijvoorbeeld:

//Variabele voor een procent aantal. Klopt niet, ik weet 't, maar een voorbeeld.
var Dodge:Number = new Number();
Dodge = 10%

//Overige variabelen
var Flee:Boolean = new Boolean();
Flee = false;
var SwiftFeet:Boolean = new Boolean();
SwiftFeet = false;
var SwiftFeetUse:Number = new Number();
SwiftFeetUse = 0;
var LastResort:Number = new Number();
LastResort = 0;

//Code om aan LastResort een waarde toe te voegen
if (HP <= 10){
LastResort = Math.Random(1-10);
}
if (LastResort <= 5){
Flee = true;
BattleText = "The monster fled from the battle!";
}else{
SwiftFeet = true;
SwiftFeetUse + 1;
Dodge + 7%
}De code klopt niet helemaal, daar ben ik me van bewust, maar zo krijgen jullie een idee wat ik van plan ben.
Ook is de code niet compleet, want die wordt wat "complexer", met als voorbeeld dat op het moment dat "SwiftFeetUse" de waarde 3 heeft, dat de toegevoegde 7% voor Dodge er weer af gaat.
Maar dat is niet het probleem.. het gaat mij er meer om dat ik een alternatief wil voor het kiezen tussen verschillende getallen.
Math.Random is goed voor een getal tussen 0 en 1, maar dat is niet wat ik zoek.
Meer een methode waarbij ik zelf kan zeggen "Kies een getal tussen X en Y" waaraan ik dan weer een desbetreffende if-else statement kan koppelen.

Dan komen we bij probleem 3:
Een Preloader. Mijn project gaat uit tig verschillende files bestaan (Preloader, a {Name} Production intro, menu, introfilm, karakterkeuze scherm e.d.).
Ik kan wel preloaders vinden die directe fotos kunnen loaden, maar niet een die checkt of alle externe SWF files zijn geladen (zelfde zoekmethodes voor Stats gebruikt).

Met vriendelijke groet,

Steven Nolles

Dauntless
%Europe/Berlin %931 %2009, 23:20
1. Hoe bedoel je, dit nabootsen?
if(Math.random() <= 0.84)
{
//hit
}
else
{
//miss
}?

2. Math.random() (met kleine letter) is wel wat je wilt hoor. Dmv een beetje wiskunde kan je een getal tussen X en Y(exclusief) krijgen:
var rnd:Number = Math.floor(Math.random() * (Y - X) + X);

3. Laad de files sequentieel in. Laad de intro in. Wanneer die klaar is begin je met het inladen van de menu swf, daarna de echte introfilm, etc, etc. Je ziet het wel vaker bij een site:
"Loading sound ... XX %"
"Loading animations ... YY%"

Ik heb ook je topic aangepast aangezien hij je problemen niet omschreef en dat dus tegen de regels is.

jaspermuts
%Europe/Berlin %946 %2009, 23:42
Als je je kennis ook voor school goed wil leren dan heb ik nog wat opmerkingen over je manier van scripten, functie- en variabelenamen beginnen altijd met een kleine letter als je goed script. Alleen classes en constants (volledig in caps) beginnen met een hoofdletter.
new Number() gebruiken is overbodig, bijv '0' is ook een Number, dus als je eerst in SwiftFeetUse new Number() zet en vervolgens een 0, dan overschrijf je toch het eerste Number.
Wat betreft probleem 3: foto's of swf's inladen verschilt niet zoveel (al dan niet), je kunt ze allebei inladen door middel van Loaders.

hoplite112
%Europe/Berlin %524 %2009, 13:35
Dank jullie voor de antwoorden.
@Dauntless
Wat jij met je Math.random if-else poste is precies wat ik zocht.
Stom van me om dat niet zelf te weten.

Dat 2e met de X en Y is niet helemaal wat ik bedoelde.. wat ik dus echt bedoelde is een functie waarbij je zelf in kan vullen tussen welke 2 getallen er één specifiek getal automatisch wordt geplukt.
Maar ik zal kijken of mijn (zwakke) rekenvaardigheden een beetje mee willen werken met de methode die jij poste :)

@jaspermuts
Vandaar ook mijn commentaar "De code klopt niet helemaal, daar ben ik me van bewust, maar zo krijgen jullie een idee wat ik van plan ben.". Alhoewel dat een vrij zwak excuus is op sommige punten.

En betreft de Preloader, ik heb maar een simpel dingetje gebruikt dat ik ergens nog in een oud bestand vondt van een eerdere schoolperiode van jaar 1 (ongeveer 17 - 19 weken geleden). Het probleem dan nu weer is dat zodra ik het preloader bestand op m'n DeviantArt account zet, alleen de Preloader speelt en er dan een zwart beeld blijft.

dit is de (simpele) preloader die ik gebruik:
var request:URLRequest = new URLRequest("swf file");
var VarNaam:Loader = new Loader();
VarNaam.load(request);
addChild(VarNaam);

-Steven

Dauntless
%Europe/Berlin %531 %2009, 13:45
Dat is toch wat die regel doet hoor:
function getRandomNumber(px:Number, py:Number)
{
return Math.floor(Math.random() * (py - px) + px);
}

trace(getRandomNumber(10, 40));
trace(getRandomNumber(123, 456));