бірнеше айнымалылар негізінде бағаны бағалау (Game Programming)

Мен сызбалық графикасыз өте қарапайым ғарыштық жауынгерлік үстел ойынын жобалап жатырмын, бірақ артқы жақтың кеңейтілген кеңістіктерге жеткілікті сенімді болуын қалаймын. Мен 1-ден 100-ге дейінгі ауқымда кеменің мүмкіндіктерінің үш түрлі аспектісін атап өткім келеді (бұл сандарды қайта қарауға дайынмын).

Мәселен, менде кеме сыныбының шаншу нүктесі бар:

// section private defense
float baseHull;
float hullMod;
float baseArmor;
float armorMod
float baseSheild;
float ShieldMod;
float miscMod = 1.0;//this can be “rarer ship types, i.e. elites or bosses or stations     or the rich.**

бұл кез-келген ерікті құнды болуы мүмкін. Мен әлі айнымалыларға бейімделу үшін ештеңе әзірлеген жоқпын, өйткені мен осы секцияларға негізделген кемелерді қалай атауға болатынын білуге ​​тырысамын ... әрқайсысы қозғалыс үшін, шабуыл нүктелері мен қорлау мүмкіндіктері. Қосылған бонус ретінде, жаһандық рейтинг жақсы болар еді. жоғарыдағыдай шабуылдау нүктелері экранда «шабуыл нүктелері» болар еді, мысалы, 50,000HP қолдау кеме кемесі үшін және 100 жердегі ғарыштық шлюпалар үшін.

рейтингте жеңіске жету ықтималдығы анықталды және «XP» жеңіске жету үшін марапатталды. Олардың бәрін қосу жұмыс істемейді, себебі 10 метрлік уранның қапталуы кем дегенде 1 метр қорғасынмен және қалқанмен біреуден артық емес. анықтама үшін жер киімі 1-ші дәреже болады, M1A1 танкі 5-ге тең болады, ал өлім жұлдызы шамамен 40-50 жыл.

Мен мұны шынайы әлемдік деректермен жасау жолдарын іздеп жүрмін, бірақ мен математикалық сиқыр немесе статистик емеспін. бұл ыңғайлы функцияны салмақ алу тәсілі бар ма? функцияны мәнді енгізуді айқындауға болады және ол ішкі мәндерді тағайындайды ма (бұл шынымен керемет, бірақ қажет емес.)

1

1 жауаптар

Сонымен, осы айнымалы мәндерді жиынтықтау нүктесіне біріктірудің қарапайым тәсілі:

hitpoints = baseHull * hullMod + baseArmor * armorMod + baseShield * shieldMod;

Кейінірек, 0-ден 100-ге дейінгі мәндерді, корпустың, броньдар мен қалқандардың қанша «мөлшерін» анықтайтын базалық мәндер үшін және 1 мен 10 аралығындағы маңызы өзгеретін мәндер үшін тағайындауға болады, бұл әр элементтің «қаншалықты күшті» екенін анықтайды бар.

Соғыс жеңімпазын есептеу келесідей болуы мүмкін, мысалы:

totalPoints = ship1Points + ship2Points;
ship1won = (rand() % totalPoints) < ship1Points;

Кемелердің нүктелері шабуыл нүктелері мен кемелердің құқық бұзушылық мәндері бойынша есептелетін кейбір мәндер болып табылады. Сонымен, сіз екі күресетін кемелердің жалпы нүктелерін есептеп, 0 және жалпы нүктелер арасында кездейсоқ санды таңдайсыз. ship1points болса, айталық, 20 және ship2points - 50, 1-ші кемеде 20/70 ұтыс ойыны мүмкіндігі бар. Ықтималдылықты азайту үшін күшті кеме жеңіске жететініне сенімді болыңыз), сіз екі ұпайды тұрақты немесе көбейте аласыз, оларды түпкілікті есептеуге дейін.

0
қосылды
тері, өнімдерді пайдалану жұмыс істей алады. бұл жалпы жағдай, ранжирлеу, әрине, жаңылыс пен күректердің әр түрлі болуы мүмкін, бұл роль ойыны стилі кеңістігі ойынының (бұл бөлімді ұмытып кетуді ұмытпаймын!) қызығушылығын тудырады, келесі екі кемеде кемелер каталогын бастаймын күндер мен құндылықтардың ақылға қонымды екенін көріп, әдісіңізді көріңіз! Нақты жекпе-жек қашу жылдамдығы/S.P.A.Z. немесе шекаралас жерлерде (оларда қарсыластардан тесуге немесе өшіруге болатын қалқандар бар) - сондықтан нақты құндылықтар маңызды болады. бұл жай ғана Spock стилін «табысқа жету мүмкіндігін» анықтау.
қосылды автор dvr, көзі