Zaloguj się, aby móc dodać artykuł

Kategorie artykułów
Logowanie


Zapamietaj mnie
Facebook
23.06
23.06.2013 12:32 Oui
Baza przedmiotów?
Witam, przy tworzeniu gry nasunęło mi się pytanie... Jeśli chcę zrobić system przedmiotów, tzn - posiadanie w inwentarzu broni, zbroi, itd. Czy do tego muszę zrobić w bazie danych osobną tabelę zawierającą wszystkie z dostępnych przedmiotów i przypisywanie ich ID pod użytkownika, czy jest na to jakiś inny sposób?
 
Komentarze
18.10.2013 01:43

Muniez
ja bym tutaj skorzystał sobie z Cake;owskiej konwencji i zrobił tą jedną tablee z wieloma przedmiotami np
Kod:
all_items{
id - autoincrementowane id
sila
zrecznosc
inteligencja
koszt
wymagany_poziom
typ - sword/armor/shield albo cokolwiek
}


Inventories{
id - autoincrementowane id
user_id - id usera z tabeli users/plaers
item_id - id 
equipped - boolean true albo false zależy czy zalozone czy nie
slot - slot w eq jesli equiped jest false
}
potem zapytanie coś w stylu
Kod:
SELECT * FROM inventories,all_items WHERE inventories.user_id=$uzytkownik_id AND inventories.item_id = all_items.id
Nie jestem fachowcem aczkolwiek mi to by fajnie pasowało
 
24.06.2013 09:18

Drikam
Chodzi o to, że dane nie ulegają zmianie i nie chcesz ich tam trzymać? Nie ma sensu się tym raczej przejmować. Po pierwsze, warto użyć
http://dev.mysql.com/doc/refman/5.0/...ge-engine.html

Po drugie, includowanie plików z danymi - też można, ale edycja tego później lub zmiany to niepotrzebne utrudnienie.
 
23.06.2013 20:41

Oui
A jakby to zrobić na podstawie includowania z plików do bazy danych jakimś sposobem? Akurat nie mam pojęcia jak to zrobić, ale może też jest jakaś możliwość?
 
23.06.2013 15:52

Drikam
Nie potrzeba 50 tabel, można tylko dać 1 pole TYPE i jedno EQUIPPED, które przechowują typ przedmioty [4=buty, 5=miecz], EQUIPPED to gdzie jest noszone [niektóre typy np. 6=miecz dwuręczny zajmują 2 ręce].
 
23.06.2013 15:23

erepu
Oczywiście że przejdzie, ale stworzy kilka problemów. 11 pól w tabeli to niedużo.
Jeżeli dobrze Cię rozumiem będziesz potrzebował takich tabel:
Kod:
Gracze:
  -id
  -imię
  -klasa
  -exp
  -głowa
  -tors
  -rękawice
  -broń
  -spodnie
  -pas
  -buty
Przedmiot:
 -id
 -numer ? (co będzie w tym polu ?)
 -nazwa
 -maksymalna ilość amunicji
 -minimalne obrażenia
 -maksymalne obrażenia
 -minimalna celność
 -maksymalna celność
 -minimalny koszt w sklepie
 -maksymalny koszt w sklepie
 -wymagany poziom
W ekwipunku planujesz coś jeszcze ? np.: rozróżnienie na prawą i lewą dłoń ? rękawice ? pas ? pierścienie ? amulety ? karwasze ? spodnie ? naramienniki ?

Zastanów się nad przedmiotami. One powinny dawać jakieś bonusy. Rzuć okiem jak to jest zrobione w DIABLO 3: http://eu.battle.net/d3/pl/item/migh...type=legendary

Jeszcze jakiś plecak, gdzie trzymałbyś przedmioty których nie używasz. Jakiej wielkości chcesz zrobić ten plecak ? 50 ? 100 ? Będzie to osobna tabelka z 50 polami, czy dodasz te pola do tabeli GRACZE ?

Zastanów się na tym i podaj mi jak prawdopodobnie (90%) będą teraz wyglądały tabele.
 
23.06.2013 15:21

Oui
Okey, dzięki za pomoc To wszystko póki co.
 
23.06.2013 15:16

Drikam
Jeżeli będziesz coś potrzebował, to zawsze możesz dorzucić nowe pola. 'koszt' można wyliczać na podstawie obecnych atrybutów broni, więc nie wiem czy jest sens trzymania tej wartości w bazie danych.
 
23.06.2013 13:02

Oui
Planuję zrobić raczej coś z losowymi wartościami danego przedmiotu, ale myślałem nad tabelą z czymś takim:

-id
-numer
-nazwa
-maksymalna ilość amunicji
-minimalne obrażenia
-maksymalne obrażenia
-minimalna celność
-maksymalna celność
-minimalny koszt w sklepie
-maksymalny koszt w sklepie
-wymagany poziom

Coś takiego nie przejdzie?
 
23.06.2013 12:51

Drikam
Wszystko zależy od jakiego ekwipunku potrzebujesz.

Może to być ekwipunek, gdzie wszystkie wartości są całkowicie losowe, więc każdy przedmiot musi być zapisany oddzielnie.
Może to też być w stylu PREFIKS PRZEDMIOT SUFIKS
Wtedy do gracza trzeba zapsiać
user_id
prefix_id
item_id
suffix_id
worn

I z tego skejać przedmiot, pobierajac z bazy dane o prefiksie, przedmiocie i sufiksie.

Np.
user_id = 2
prefix_id = 3
item_id = 4
suffix_id = 7
worn = 1

Oznacza, że gracz 2 ma założony przedmiot PREFIX_3 ITEM_4 SUFFIX_7.
W osobnych tabelach lub tabeli trzymasz informacje o bonuswach i nazwach.

Np.
PREFIX 3 oznacza "Pozłacany" i daje +3 do wyglądu
ITEM 4 oznacza "Miecz dwuręczny" i daje +3-8 obrażeń
SUFFIX 7 oznacza "Grabieżcy" i daje +20% do znalezionego złota.



A jeżeli chcesz trzymać informacje o każdym przedmiocie z osobna, proponuję dwie tabele, jedna przechowuje nazwe, id gracza, id przedmiotu.
A w innej tabeli wiążesz bonusy do danego item_id.
ITEM_ID
BONUS_ID/NAME
VALUE

No i mamy id przedmiotu, ktory ma wlasnosc.
Id bonusu, najlepiej liczba, ale moze ostatecznei tez byc string/varchar. Np. 'SIŁA'
value ooznacza wartość, np. +3

wiec przedmiot o danym id ma +3 siły. Trzeba to tylko rozsądnie uwzględnić w obliczeniach.



Najgorsze co można zrobić to olbrzymia tabela w stylu
SILA
ZRECZNOSC
INTELGIENCJA
WIECEJ ZLOTA
WIECEJ DOSWIDACZENIA
ZYCIE
KRADZIEZ ZYCIA
SZANSA NA ZNIESIENEI JAJKA PRZY OTRZYMYWANIU CIOSU
OBRONA
MINIAMLNE OBRAZENIA
MAkSYMALNE OBRAZENIA

która w większości przypadków będzie posiadała więcej zer niż potrzebnych wartości.