Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Rady przy organizacji pracy przy sporym projekcie
Renamon
post 2.08.2014, 17:54:17
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 25.04.2010

Ostrzeżenie: (0%)
-----


Witam,

potrzebuję rad, uwag, wszelkich informacji na co muszę zwrócić uwagę przy budowaniu sporego projektu.
Podstawy posiadamy, za nami parę prostych stron również jednak przyszedł czas kiedy być może rzucimy się na coś co musi uciągnąć sporą ilośc userów online, danych, itp.

Założenia:

- Parędziesiąt tysięcy userów zarejestrowanych
- Paręset userów online
- Tysiące danych w bazie


Czy istnieją w internecie/książkach jakieś poradniki jak zabrać się do projektu który może się okazać (nie odrazu oczywiście) musi utrzymać setki ludzi online ?

Do tego wystarczy MySQL ? czy już myśleć o jakimś innym zamienniku ? (Dane będą po 3-4 miesiącach rozgrywki zerowane, poza zarejestrowanymi userami, więc to nie będzie wiecznie rozwijająca się baza).

Jak zorganizować sobie podział wszystkiego aby serwis podołał wyzwaniu ?

Projekt byłby grą, w grze dość często potrzebujemy przeliczeń wszelkich zmian, jak proponujecie to rozwiązać ? cron co np. minutę?

Poszukuję osoby która wyjaśni na co zwrócić uwagę, lub podrzuci jakieś informacje gdzie mogę poczytać na ten temat, takiej która pomoże "przeskoczyć" z prostych zadań szkolnych czy tutorialowych do poważniejszych projektów tak aby nie zrobić zasobożernego potwora który powali najnowsze serwery.

Ten post edytował Renamon 2.08.2014, 17:57:05
Go to the top of the page
+Quote Post
Dejmien_85
post 12.08.2014, 00:38:38
Post #2





Grupa: Zarejestrowani
Postów: 251
Pomógł: 23
Dołączył: 23.04.2013

Ostrzeżenie: (0%)
-----


Dobra, widzę że nikomu się nie chce tutaj odpisywać, ale też im się nie dziwię, bo nie podałeś żadnych konkretów - napisz coś więcej o tej apce, jak to ma wyglądać, to otrzymasz więcej info.

Co do bazy danych - MySQL sobie poradzi bez problemu, żadne tysiące danych nie są tej bazie straszne, możesz do niej pchać miliony rekordów.

Problemem będą serwery (i ich przyrost, gdy apka dostanie czkawki, będzie potrzebny sysadmin). Jeśli tworzycie system na PHP, wtedy liczcie się z tym, że wydajność nie będzie jego mocną stroną. Ale z braku konkretów nt. apki też nie ma co się rozpisywać o wydajności, no bo o czym tak naprawdę mamy pisać? Z fusów wróżyć specyfikacji waszego serwisu nie będę. : )

Podaj więcej konkretów, wtedy pogadamy.

PS Coś mi się wydaje, że troszkę mijacie się z celem pisząc grę w PHP. Pisząc serwisy można bawić się w cache i mocno poprawiać wydajność, ale w przypadku gier online trzeba kłaść duży nacisk na wydajność technologii. Choć dodam na pocieszenie, że warto zacząć z czymkolwiek, aby zdobyć doświadczenie. Ta gra może być waszym pierwszym projektem, który nauczy was wiele i z którego wyciągniecie prawidłowe wnioski.

Ten post edytował Dejmien_85 12.08.2014, 00:46:28
Go to the top of the page
+Quote Post
Renamon
post 19.08.2014, 10:27:52
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 25.04.2010

Ostrzeżenie: (0%)
-----


Dzięki za odpowiedź,

Może zatem proponujesz coś innego niż php ? Zmiana języka/technologii to nie będzie za duży problem na tym etapie, jeśli będzie trzeba wrócić do podstaw w czymś innym to wrócimy.
Nie wiem za co tu tak naprawdę powinienem rozpisać wam aby trochę przybliżyć projekt pomijając szczegóły które są mało ważne i z drugiej strony których wolał bym nie pisać smile.gif.

Gra trochę taka oklepana,
są ludzie którzy wydobywają surowce,
będą giełdy na których będzie można te produkty sprzedawać (całkowicie wolny rynek, gracze sami decydują o wartości przedmiotów)
możliwość odkrywania nowych technologii (tutaj po prostu koszt waluty w grze + trochę czasu)
możliwość craftingu lepszych narzędzi dla naszych ludzi

Problemem nad jakim się głównie zastanawiam to cała produkcja będzie przebiegać w trochę inny sposób bo będzie zależna od wszystkich graczy na serwerze więc trzeba ją rozwijać aby być "lepszym" od innych:

przykładowo 1 gracz ma 2 ludzi wydobywający dany surowiec, a 8 będzie miało po 1 to ten z 2 ludzikami dostanie 20% danego złoża, a reszta po 10% dlatego nie można zastosować tutaj metod uprawszających, że przeliczenie surowców nastąpi gdy gracz odświeży stronę lub gdy się zaloguje/ktoś go zaatakuje lub będzie chciał zabrać część surowców ponieważ to się zmienia dosłownie co chwila, gracz wyśle ludzi gdzie indziej do pracy i już cała reszta zdobywa inny % złoża.

W założeniach mamy przeliczenie co 1-2 min tego i raczej tego chcemy się trzymać.

Giełdy wiadomo, gracz wyrzuca co chce sprzedać i za ile, dodatkowo będzie też opcja wystawiania ofert kupna, giełda będzie wyświetlała zawsze najlepszą ofertę zakupu i sprzedaży + chciałbym aby trzymała jakieś dzienne statystyki (ile się sprzedało, za jaką średnio cenę, etc.)



Pod pojęciem tysięcy rekordów poniekąd miałem na uwadze fakt że to może się dość szybko rozrosnąć do milionów ponieważ ustalając szczegóły ciągle dochodzą nowe rzeczy do trzymania w bazie. Jak np. historia logowań danego gracza, trzymaj z 10 logowań wstecz i już dochodzi dla każdego tysiąca graczy po 10 tysięcy rekordów trzymających datę i ip minimum.



Głównie zależy mi na poznaniu metod jak się zabrać do pisania większego projektu bo jak wiadomo tutoriale pokazują jak zrobić coś by działało, a w większości metody nie pasują do obecnych czasów i realiów.

Ten post edytował Renamon 19.08.2014, 10:30:15
Go to the top of the page
+Quote Post
Dejmien_85
post 19.08.2014, 16:53:34
Post #4





Grupa: Zarejestrowani
Postów: 251
Pomógł: 23
Dołączył: 23.04.2013

Ostrzeżenie: (0%)
-----


Niepotrzebnie skupiasz tak bardzo uwagę na bazie danych. Ona jest od tego, aby zapisywać do niej dane. Możesz spokojnie pchać tam miliony rekordów. Gdy pojawi się problem z wydajnością, wtedy jest keszowanie i aplikacje typu sphinx (indeksuje całą bazę i rekordy wyciągasz migiem).

To na czym się powinieneś skupić, to zaprojektowanie apki. I przy tworzeniu projektu zapomnij o bazie danych. To błąd. Jeśli ktoś podczas tworzenia klas aplikacji zaczyna myśleć o bazie danych i zastanawiać się nad tabelami, wtedy nieświadomie nakłada na siebie ograniczenia. Nie myśl kryteriami bazy danych i tabel. Zapomnij o bazie, skup się na kodzie, klasach, zmiennych, danych (ale samych danych, a nie bazie danych).
Myśl o aplikacji samej w sobie, klasach i danych jakie będzie potrzebować. Gdy zaprojektujesz aplikację, wtedy dopiero pomyślisz o bazie danych, tabelach itd - ale to dopiero PO zaprojektowaniu klas itd.

A co do Twojej apki - polecam Ci wziąć się za literaturę dotyczącą projektowania aplikacji, np. Object Oriented Design i Object Oriented Analysis. Widzę, że mniej więcej wiecie czego chcecie, jednak nie macie tak naprawdę pojęcia jak to ma działać. Z tego powodu polecam temat OOD&A. Po odrobieniu pracy domowej powinniście wiedzieć od czego zaczać (przygotowanie jasnej specyfikacji i dokładnych opisów jak apka ma funkcjonować).

Zaczynanie od pisania kodu bez jasnych wytycznych sprawi, że będziecie później tego żałować.

No i oczywiście zalecam lektury dotyczące gier online. ; )

I przemyślcie na poważnie, czy nie lepiej wejść w inny język. I tak będziecie musieli postawić tą grę na serwerze VPS/Dedyku, także można użyć wydajniejszych rozwiązań (nie chcę was tutaj straszyć C++, ale np. D, Go, albo nawet i Java będą się sprawować o wiele wydajniej niż PHP - i wszystkie te języki mają automatyczne zarządzanie pamięcią, więc sobie w stopę nie strzelicie tak łatwo).
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 08:06