databasestructuur voor spel

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben op zoek naar de meest optimale vorm voor een database bij een spel.

Het is een soort ganzenbord, waarbij iedere speler over meerdere ganzen beschikt, tevens heeft het spel meerdere banen naast elkaar, waarbij onder omstandigheden door de ganzen gewisseld kan worden van baan (bijvoorbeeld van veld C1 wel naar B2 of A2, maar niet naar D2).
Iedere beurt wordt elke gans gespeeld.
Soms wordt het aantal banen minder, ganzen kunnen elkaar dan blokkeren.
Alle velden in de baan kunnen eigenschappen bezitten die het lopen van de gans versnellen of vertragen en dit kan per baan verschillen. Per spel is het bij de start mogelijk om een traject uit te kiezen.
De spelers moeten bovendien een persoonlijkheid aan hun gans kunnen geven.
Ook moeten er meerdere spellen tegelijk kunnen worden gespeeld. Dit is mijn simpele opzet (zonder id's)
ganzen			
	eigenschappen		
traject
        id-traject		
	baan		
	veld	
	eigenschappen
deelnemers			
	persoonlijke gegevens			
spellen			
	traject
	deelnemers		
                
gans_in_spel
         spel             
	beurt
        positie
        baan	
			
personalities(gekozen aliassen voor de ganzen per spel)			
	namen		
	image	


De moeilijkste beslissing vindt ik het modelleren van het traject in de DB.
Nu moet ik voor ieder veld in elke baan de eigenschappen aangeven of NULL.
Een andere mogelijkheid is alleen de afwijkende eigenschappen in een aparte tabel zetten.

Beide keuzes lijken me verdedigbaar, maar ik kan hier toch wel wat hulp bij gebruiken.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Bij mij rijst maar 1 vraag: Waarom in he-mels-naam een database voor ganzenborden :?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Om online te kunnen spelen natuurlijk.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:00

Creepy

Tactical Espionage Splatterer

IK zie zaken als "namen", "deelnemers" en "eigenschappen". Dat is hopelijk niet 1 veld waar je meerdere waardes in gaat zetten?

Anyway, ook mij lijkt een DB voor ganzeborden een beetje overkill tenzij je games over dagen gaat lopen verdelen i.p.v. realtime een spelletje spelen van een paar minuten...

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
Verwijderd schreef op dinsdag 26 mei 2009 @ 16:28:
Om online te kunnen spelen natuurlijk.
Online als vertraagd online (zetten en dan volgende dag dat iemand anders een zet doet?) Of 'realtime' in een javascript/flash/silverlight applicatie?

Edit: creepy was me voor!

[ Voor 7% gewijzigd door roy-t op 26-05-2009 16:33 ]

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 26 mei 2009 @ 16:28:
Om online te kunnen spelen natuurlijk.
Dat lijkt me wel relevant om te vermelden in je TS en daarbij is het dan weer relevant om te weten of 't "real time" is of een potje verspreid over een langere periode (zoals hierboven dus ook al vermeld wordt).

Verder: met creepy. Of je veldomschrijvingen zijn wat vaag of je DB is niet echt 'optimaal'...

[ Voor 12% gewijzigd door RobIII op 26-05-2009 16:38 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Jullie hebben gelijk, daarom:
Het is de bedoeling dat je niet continu online hoeft te zijn, dus vandaar de database.
De veldnaam Namen moet inderdaad Naam zijn, enn hetzelfde voor deelnemer..
Bij eigenschappen zou je eigenlijk moeten lezen :
eigenschap1
eigenschap2 .....(waarschijnlijk worden het er 2 of 3 (die dan de eigenschappen van de velden kunnen versterken of juist teniet doen)).

[ Voor 3% gewijzigd door Verwijderd op 26-05-2009 16:52 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:00

Creepy

Tactical Espionage Splatterer

Als je zaken gaat lopen nummeren (naam1, naam2, etc) dan zit je zeer waarschijnlijk verkeerd met je db ontwerp ;)
Als je gaat google'en of de got search gebruikt met termen als normaliseren en n:m relaties dan zie je hopelijk hoe je dat moet oplossen.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat weet ik , alleen heb ik hier niet al te gedetailleerd op in willen gaan:
De eigenschappen (van de gans) zijn verschillend en worden met Ja/Nee gevuld.

Ik blijf zitten met het probleem traject, daar zit ik met bijvoorbeeld:
traject 1
baan A
veld 23
eigenschap : sla beurt over.
traject 1
baan B
veld 27
eigenschap : tel 1 (of meer) op bij je (huidige of volgende) worp.
Of vul ik alle velden ? :/

Nu ik het zo lees lijkt het me eigenlijk dat ik niet alle velden hoef te benoemen, alleen de velden die afwijkend zijn.
Daarmee kan ik de tabel "traject" veel kleiner houden. :)

Acties:
  • 0 Henk 'm!

  • storeman
  • Registratie: April 2004
  • Laatst online: 12:59
Ik zou het niet op de manier doen. Ik zou gewoon alle velden opnemen in je traject en je eigenschap meegeven door middel van een code.

Een database kijk niet op van een paar duizend tot miljoenen records.

Daarnaast zijn een paar codes ook niet de meest ingewikkelde data. Het veld eigenschap zou ik als code gebruiken. Dit omdat je dit veld toch nog nodig hebt in je business logica.

1.0 = Normaal veld
1.2 = Normaal veld dubbele grootte
2.1 = Ga 1 stap terug
2.2 = Ga 2 stappen terug
2.3 = Ga 2 stappen terug

Dit kun je nog weer mooier maken door de rij een type te geven en een parameter.

type: 2, parameter: 2 (ga 2 stappen terug)

"Chaos kan niet uit de hand lopen"


Acties:
  • 0 Henk 'm!

  • Foamy
  • Registratie: November 2006
  • Laatst online: 19-09 08:49

Foamy

Fulltime prutser

Ook nog een tipje: waarom heb je 2 verschillende ganzentabellen? Kun je niet beter 1 tabel genaamd gans aanmaken en daar bij de eigenschappen aangeven of de gans wel of niet meedoet?

blub


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:00

Creepy

Tactical Espionage Splatterer

Een gans kan meedoen aan meerdere spellen en een spel heeft meerdere gansen. Klassieke n:m relatie dus dat ga je niet in 1 tabel opslaan Foamy ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@ storeman,
Zo had ik het eerst bedacht, maar omdat ik meerdere trajecten ga maken wilde ik mijzelf werk besparen.
Ik vindt je idee van type en parameter wel goed, maar zou ik dat dan apart opslaan of alles in 1 VARCHAR ?

@Creepy en Foamy. Het is zoals Creepy zegt.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 26 mei 2009 @ 18:27:
maar zou ik dat dan apart opslaan of alles in 1 VARCHAR ?
Dat is nooit (na ja, zéér zelden) een goed idee. Verschillende gegevens horen in verschillende velden/tabellen en niet bij elkaar gepropt in 1 veld omdat 't "compacter" of "mooier" of whatever zou zijn. Verdiep je eens in normaliseren van databases.

[ Voor 10% gewijzigd door RobIII op 26-05-2009 18:33 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Foamy
  • Registratie: November 2006
  • Laatst online: 19-09 08:49

Foamy

Fulltime prutser

@creepy; my bad.. Dat had ik niet helemaal meegekregen. Als 1 gans inderdaad tegelijkertijd met meerdere spellen mee kan doen wil je dat inderdaad niet hebben nee :)

edit:
Nou ik de TS nog eens doorlees: Het gaat er over dat een spel meerdere banen bevat. Het lijkt mij dat een gans dan maar tegelijkertijd op 1 baan kan staan (of je moet met cloning powerups gaan werken). Dus dan is mijn redenatie toch niet zo heel verkeerd?

Je geeft dan als properties aan je gans mee op welke baan hij zich bevind, en tevens waar op die baan hij ergens rondzwerft..

[ Voor 55% gewijzigd door Foamy op 26-05-2009 18:50 ]

blub


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@ Foamy
Er zijn meerdere typen gans, iedere soort heeft zijn eigen eigenschappen.
Leider, volger, helper enz.......
Iedere deelnemer kan meerdere ganzen kiezen, maar van elk type maar 1 en bij 4 deelnemers zullen er dus 4 Gans_Leiders zijn op het traject. Verder heeft de deelnemer de mogelijkheid om een (al dan niet bekende)persoon aan de gans toe te kennen.
Verder kan ik helaas niet verklappen © 8)
Pagina: 1