Daudz spēlētāji

Vēlies radīt spēli, bet nezini ar ko sākt? Sperot pirmos soļus, vari meklēt padomu šeit
Message
Author
CodeWolf
Posts: 119
Joined: 10 Dec 2010, 19:10
Location: LV-Riga-Marupe

Daudz spēlētāji

#1 Post by CodeWolf » 21 Dec 2010, 20:57

Sveiki. Kas varētu but par lietu?
Izveidoju speli ar daudzspēlētāju režīmu... uzzīmēju 3d objektus un sāku tos kustināt.. Piesledzoties serverim viss būtu labi.. bet brīdi kad pieslēdzas velviens spelētajs objetks nav kustināms...Un abos logos bidot kasti(pec kuras pozicijas tiek uzstadita kameras pozicija) ir identiski... kas man būtu jādara? liekas ka matrica tiek veidota visiem viena un tpc ir redzami identiski logi...
Kastes:

Code: Select all

  Box = new Model[2];
            for(int i=0;i<2;i ++)
               Box[i] = Content.Load<Model>("Models\\Box" + (i + 1));

Code: Select all

 Skatijums = Matrix.CreateLookAt(KamerasPozicija + new Vector3(0, 40, 180), kvp.Value, Vector3.Up);
            Projekcija = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4, ASP, 10f, 10000f);

            TerrainTransformi = new Matrix[Box[num].Bones.Count];
            Box[num].CopyAbsoluteBoneTransformsTo(TerrainTransformi);


            foreach (ModelMesh mesh in Box[num].Meshes)
            {
                foreach (BasicEffect EFX in mesh.Effects)
                {
                    EFX.EnableDefaultLighting();
                    EFX.PreferPerPixelLighting = true;
                    EFX.World = TerrainTransformi[mesh.ParentBone.Index] * Matrix.CreateTranslation(kvp.Value);
                    EFX.View = Skatijums;
                    EFX.Projection = Projekcija;
                    EFX.VertexColorEnabled = false;
                 

                }

                mesh.Draw();
            }
//OpenGL

balandinsarturs
Posts: 14
Joined: 17 Dec 2010, 02:51

Re: Daudz spēlētāji

#2 Post by balandinsarturs » 21 Dec 2010, 23:46

Pats ar daudzspēlētāju režīmu vel neesmu strādājis, bet šķiet, ka vietā būtu veidot otru skata matricu.
Domāju ka ideju tu vari smelties no : http://msdn.microsoft.com/en-us/library ... 31%29.aspx

Noteikti novelc piemēra failu un apskati kā tas darāms - tiek veidoti divi skata logi un katrs ar savu skata matricu. Apskati piemēru un paņem to kas tev vajadzīgs.

User avatar
raymix
Posts: 46
Joined: 07 Dec 2010, 14:57

Re: Daudz spēlētāji

#3 Post by raymix » 22 Dec 2010, 02:29

Vai tu kamerai arī izmanto arrays? Un vai kamera tiek spawnota pareizi - tikai lokāli katram spēlētājam unikāla? Neveido lieku trafiku, serverim vajag tikai zināt kur atrodas kaste, un kur to pieprasa kustināt. Kamera servera pusē vispār nav jaizmanto (nevaru iedomāties spēli, kurai vajadzētu)
Varētu lūdzu skrīnšotu un sīkāk aprakstīt, man biki grūtības saprast, ko vēlies panākt
Take bullshit from no one, always follow your own dreams, even if it means going where no one has gone before.
Embrace failure and mistakes, because they will help you make better decisions in the future.

//Kim Jørgensen - AAA dev//

CodeWolf
Posts: 119
Joined: 10 Dec 2010, 19:10
Location: LV-Riga-Marupe

Re: Daudz spēlētāji

#4 Post by CodeWolf » 22 Dec 2010, 16:25

To Split screen ari skatijos.. tikai īsti neizpratu kā viņu pielietot.. priekš 1 speletaja...

Kā tu domāji kamerai Arrays? Kameras Pozicijai vai Matricai?
un ko man vajadzētu rakstīt tajā array? speletaju skaitu?
iemetu video lai vieglak saprast.. :)
http://87.110.72.117/gc/GC.html
//OpenGL

balandinsarturs
Posts: 14
Joined: 17 Dec 2010, 02:51

Re: Daudz spēlētāji

#5 Post by balandinsarturs » 22 Dec 2010, 20:33

CodeWolf wrote:To Split screen ari skatijos.. tikai īsti neizpratu kā viņu pielietot.. priekš 1 speletaja...
tur katram ekrānam ir sava pozīcija un skata leņķis ja pievieno kartam savu vadību tad katrs ir spēlētājs. tātad katram spēlētājam piešķir savu pozīciju un skata matricu. domāju jāraksta kautkāds dalošais kods teiksim pats veidotājs saņem 1. avatara pozīciju un skata matricu nākošais jau nāskošo. Vai arī ir jāveido vienkārša datu pārraide kura vienkārši paziņo par pretinieka pozīciju un ja vinš ir tavā redzamības laukā, tad jāzīmē viņš tur.

Tavā video tu atver divus logus no viena datora - es pamēģināju tā izdarīt uz sava => abos logos notiek viens un tas pats - šiet tā ir tādēļ ka mainīgie ir izveidoti ar šādiem nosaukumiem un vadība arī ir vienāda un arī vērtības ir un vienmēr būs vienādas. uz diviem datoriem būtu jābūt pilnīgi citam effektam. Ja tomēr gribi uz viena tad nostrādās tikai variants ar divām skata matricām un citu vadību.

Tā man šķiet iespējams šķiet galīgi greizi - GUDRIE, palabojiet mani ja kļūdos. :D

User avatar
raymix
Posts: 46
Joined: 07 Dec 2010, 14:57

Re: Daudz spēlētāji

#6 Post by raymix » 22 Dec 2010, 23:52

statiskie (globalie) mainīgie, nekas cits. Šī ir server side problēma, ja katrs klients (.exe) ir identisks, tiek spawnots unikāls caur array (lasot tavu kodu), bet kontrole ir šārota. Vispār jau kustība kā tāda tikai uz servera notiek, izņemot lokālās kalkulācijas, kā piemēram kamera, particles utt.
Pirmajam, kas pieslēdzas tiek iedalīts kontrolieris, katrs nākamais, kas pieslēdzas nolasa gatavus mainīgos no pirmā klienta, jo servers nav katru klientu unikālu taisijis.
Ja otrs klients vismaz nekopētu mainīgos no pirmā klienta, tad droši varētu skatīties uz windows limitāciju - izmantot citu datoru, kā otru klientu, tb ja kontrole tiek dota tikai vienai *.exe instancei (jebkura gadijumā es personigi uzskatu, ka tas ir absurds)
Par cik mēs visu kodu neredzam, nekas cits neatliks, kā laist debagu uz servera, pēctam uz katra klienta atsevišķi. Liec breakpoint pirms user input un lēnā garā skaties, kas vainīgs pie datu šārošanas
Take bullshit from no one, always follow your own dreams, even if it means going where no one has gone before.
Embrace failure and mistakes, because they will help you make better decisions in the future.

//Kim Jørgensen - AAA dev//

bubu
Guru
Guru
Posts: 398
Joined: 07 Dec 2010, 11:54

Re: Daudz spēlētāji

#7 Post by bubu » 23 Dec 2010, 14:00

Īsti nesapratu. raymix - tu apgalvo, ka viena exe faila divas palaistas instances šārē globālus statiskos mainīgos? Tā katrā ziņā nav taisnība. Lai exe fails šārētu globālos mainīgos starp dažādām tā instancēm tur vajag maģiskus trikus veikt (ar exe faila linkera sekcijām), tā vienkārši tas nenotiek.

User avatar
raymix
Posts: 46
Joined: 07 Dec 2010, 14:57

Re: Daudz spēlētāji

#8 Post by raymix » 24 Dec 2010, 19:58

@bubu: nea, es to neapgalvoju, posts pirms mana, gan, vismaz man taa liekas. Iekavaas tac mineju, ka tas ir absurds
es apgalvoju, ka klienti savstarpeji vai serveris sharo vienus un tos pashus globalos mainigos.
Kautgan single players, bet man bija lidziga situacija, kad vizualam debugam liku atseviskam objektam dot komandas citiem objektiem (lidzigi ka serveris shaja gadijuma), pirmais instantetais (spawnetais) objekts stradaja ka vajag, visi parejie kopeja globalos no taa. Grozi kaa gribi, tas vnk neies cauri.
Take bullshit from no one, always follow your own dreams, even if it means going where no one has gone before.
Embrace failure and mistakes, because they will help you make better decisions in the future.

//Kim Jørgensen - AAA dev//

balandinsarturs
Posts: 14
Joined: 17 Dec 2010, 02:51

Re: Daudz spēlētāji

#9 Post by balandinsarturs » 26 Dec 2010, 18:36

CodeWolf wrote:Tā man šķiet iespējams šķiet galīgi greizi - GUDRIE, palabojiet mani ja kļūdos. :D
- Katrā ziņā es izteicu pieņēmumu nevis apgalvojumu

Tātad tu bubu saki ka nav iespējams ka - ja viens exe fails tiek palaists un teiksim ar inputa palīdzību tiek mainītas kāda objekta kordinātes un pēc tam palaižot vel vienu reizi tieši to pašu exe , neaizverot iepriekšējo logu (no tā paša datora ) , jaunais logs nevar iegūt tā paša objekta tādu pašu mainīgā vērtību (tā teikt nokopēt to), pats no sevis????? :?:
Last edited by balandinsarturs on 27 Dec 2010, 20:05, edited 1 time in total.

bubu
Guru
Guru
Posts: 398
Joined: 07 Dec 2010, 11:54

Re: Daudz spēlētāji

#10 Post by bubu » 26 Dec 2010, 22:31

balandinsarturs wrote:Tāta tu bubu saki ka nav iespējams ka - ja viens exe fails tiek palaists un teiksim ar inputa palīdzību tiek mainītas kāda objekta kordinātes un pēc tam palaižot vel vienu reizi tieši to pašu exe , neaizverot iepriekšējo logu (no tā paša datora ) , jaunais logs nevar iegūt tā paša objekta tādu pašu mainīgā vērtību (tā teikt nokopēt to), pats no sevis????? :?:
Protams var, ja programmā tā ir uztaisīts (t.i. ir bugs) - piemēram, visiem klientiem liek pirmā klienta koordinātes.
Bet paši no sevis globālie mainīgie nešārē datus starp exe instancēm, ja vien neveic īpašus linkera trikus.

Post Reply

Return to “Iesācējiem / For beginners”