Rozwiązania stosowane w grach – level

Dziś poznamy tajemnice jednego z podstawowych elementów gier, także tych internetowych. Będzie to znany wszystkim „level”. Jak wiadomo, nasz poziom doświadczenia rośnie, kiedy wykonujemy różne akcje. Każdy dobrze też wie, że nabijanie na początku jest łatwiejsze niż w późniejszych etapach gry. Jak wdrożyć taki system do własnej gry? Poniżej przedstawiam przykładowe rozwiązanie.

Level składa się z pojedynczych punktów, które przeliczane są odpowiednim algorytmem na końcowy, bardziej przyjazny użytkownikowi wynik. Zdobywane punkty są wyświetlane bezpośrednio, pokazywane w uproszczonej formie (procenty) lub całkiem ukrywane. Naszym pierwszym krokiem będzie przygotowanie tabeli użytkowników w bazie danych MySQL, która pomieści podstawowe dane – id gracza, jego nick i liczbę zdobytych punktów.

{code}CREATE TABLE IF NOT EXISTS `users` (
`user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`points` int(10) NOT NULL DEFAULT ‚0’,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1;{/code}

Przyda nam się też prosta funkcja PHP dodająca pojedyncze punkty wybranemu użytkownikowi.

{code type=php}function add_points($user_id, $points) {
mysql_query(‚UPDATE users SET points = points + ‚.$points.’ WHERE user_id = ‚.$user_id);
}{/code}

Tak przygotowany kod pozwala nam na stworzenie prostej strony dodającej punkty doświadczenia wybranemu użytkownikowi.

{code}

<?php

if(is_numeric($_POST[‚user_id’]) && is_numeric($_POST[‚points’])) {
add_points($_POST[‚user_id’], $_POST[‚points’]);
}

?>

<form method=”post” action=”‚.$_SERVER[‚PHP_SELF’].'”>

Wybierz użytkownika: <select size=”1″ name=”user_id”>

<?php

$query = mysql_query(‚SELECT * FROM users’);

while($row = mysql_fetch_array($query)) {

echo ‚<option value=”‚.$row[‚user_id’].'”>’.$row[‚username’].’ (‚.$row[‚points’].’)</option>';

}

?>

</select>

<br />

Dodaj punktów: <input type=”text” name=”points” />

<br />

<input type=”submit” value=”Dodaj” />

</form>

{/code}

Poniżej widzimy efekt naszej pracy. Przy pomocy prostego formularza dodajemy punkty wybranemu z listy użytkownikowi. Można, a nawet trzeba rozbudować go o kolejne opcje, żeby miał zastosowanie w naszej grze. To zależy już od Waszych pomysłów i wyobraźni.

Zamieszczam też kod źródłowy naszego przykładu. Wymaga on dodania tabeli do bazy danych, wypełnienia jej rekordami i uzupełnienia danych bazy w przyklad.php.

Przykład 1 – kod źródłowy

Mamy już podstawę, czyli rosnące punkty doświadczenia. Jak zastosować tu algorytm podziału na levele? Do tego celu dodamy kolejną funkcję, która przeliczy nasze punkty. Zaczniemy od 200 i będziemy ten próg stopniowo podnosić. Dodamy też blokadę ograniczającą nasz licznik do 99.

{code type=php}function level($points) {

$level1 = 200;
$current_lv = 0;
$level = 0;

while($level < $points) {
$level += $level1;
$level1 *= 1.2;
$current_lv++;
}

if($current_lv > 99) {
$current_lv = 99;
}

return $current_lv;

}{/code}

To już tyle. Pozostało nam sprawdzenie, czy wszystko działa poprawnie. Pomóc może dodany w załączniku skrypt z rozwiniętym przykładem 1. Zastosowanie podobnego systemu w Waszych grach nie powinno być już problemem.

Przykład 2 – kod źródłowy

Jedna myśl nt. „Rozwiązania stosowane w grach – level”

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>