Kontynuacja projektu

Jako, że jest to projekt, przy którym postanowiłem, że nie odpuszczę go tak szybko tak i oto po przerwie wracam do pracy. Poprawiłem trochę swoją organizację pracy i udało mi się zagospodarować minimum jeden dzień w tygodniu na pracę nad projektem. Akurat tak przypadło, że jest to niedziela.

Pisałem w wcześniejszych wpisach w postępach o tworzeniu GUI. Na początku wydawało się to dobrym pomysłem ale jednak doszedłem do wniosku żeby spróbować zaimplementować jakiś framework. Po zaimplementowaniu TGUI na początku było wszystko w porządku ale ma zbyt małe możliwości jeżeli chodzi o konfigurację. W każdym bądź razie miałem zbyt duże wymagania co do tego frameworku.

Na drugi strzał przyszedł SFGUI. W tym przypadku zabawa skończyła się jeszcze szybciej. Przez kilka dobrych dni męczyłem się z konfiguracją. Wyszło na to, że SFGUI ma jakiś problem z OpenGL. Kompilacja przebiegała pomyślnie za każdym razem lecz nic nie zostawało wyświetlane i pojawiała się tylko gromada błędów wyrzucanych przez OpenGL.

Dziś doszedłem do wniosku, że nie ma sensu dalej szukać odpowiadającemu mi frameworkowi tylko napisać GUI od podstaw samemu. W tym przypadku nie jest to bezpośrednia implementacja w grze tylko osobna biblioteka, którą bez problemu będę mógł użyć w przyszłych projektach. Ktoś mógł by zapytać „Po co samemu pisać bibliotekę?”. A przede wszystkim po to aby mieć narzędzie, które nie ogranicza mnie w niczym. Jak potrzebuję jakąś funkcjonalność to wystarczy, że sam sobie ja napiszę i mogę ją używać dalej w tym projekcie oraz przyszłych.

W samym GUI jak widać na screenie poniżej mam już zrobiony label oraz button. Działa już również obsługa sygnałów typu onClick, onRelease, onDrag, onDrop. Po dokładnym debugu przycisku oraz obsługi sygnałów będę zabierał się za kolejne elementy interfejsu.

Zrzut ekranu (8)

A jeżeli chodzi o samą grę to również jest postęp. Renderowana jest już mapa chociaż jeszcze trzeba nad tym popracować (screen poniżej).

Zrzut ekranu (5)

Reklamy
Kontynuacja projektu

Update #3 | Chwilowy brak postępów

Dlaczego?

Niestety miały być regularne wpisy na blogu a tu jednak lipa. Niestety czasami wyskoczy jakaś dodatkowa praca i niestety trzeba porzucić na jakiś czas dodatkowe projekty. Tak właśnie się stało ostatnio w moim przypadku. Praca zarobkowa jednak zawsze przewyższa pracę nad rozwijaniem własnych projektów w których zyskujemy doświadczenie oraz rozrywkę.

Na czym stoję?

Przez ostatnie kilka dni nadal pracowałem nad elementami GUI. Mam już skończony label, button i właśnie w fazie testów jest lista elementów.

Co następne?

Do następnego wpisu na pewno będzie stworzony kolejny element Gui oraz na pewno przeprowadzę częściowy refactor stworzonego już kodu.

Już teraz mam nadzieję, że uda mi się dość regularnie wrzucać jakiś update dotyczący rozwijania projektu. Jedynym wyjątkiem kiedy wpis się nie pojawi to moment, w którym nie będzie zbyt dużego postępu nad grą.

Update #3 | Chwilowy brak postępów

Update #2

Wesołego Alleluja!!!

Z okazji świąt Wielkiej Nocy życzę wszystkim wszystkiego najlepszego.

Przejdźmy do sedna

W związku z świętami mam teraz chwilę czasu na prace nad projektem. Ostatnimi czasy mam go jakoś coraz mniej. Chyba będę musiał przyłożyć się do układania planu dnia z naciskiem na czas wolny na możliwość popracowania nad projektem.

Wiem, że ostatnio się bardzo zapuściłem jeżeli chodzi o wpisy na blogu, które miały być regularnie (ostatni wpis z dnia 26.03.2017) więc przydało by się zacząć dotrzymywać tego co miało się robić czyli regularne wpisy na blogu o postępach prac nad projektem, który pewnie przez to moje nieregularne dodawanie wpisów na blogu jest zdyskwalifikowany w konkursie. Ale nie mam zamiaru się tym przejmować tylko dalej dodawać wpisy oraz aktualizacje postępu prac nad grą.

Update

Cały czas poświęcam na rozwijanie GUI. Bez tego sama gra nie będzie miała sensu. Od oststniego wpisu nie udało mi się zrobić aż tak dużo ale zrobiłem trochę refactoringu kodu żeby był trochę czytelniejszy oraz dokończyłem to co miałem zaczęte. Na chwilę obecną jestem na etapie tworzenia elementu GUI z listą elementów. W tej chwili już na github jest wrzucony commit gdzie wyświetla się tło elelemtnu. Niby tak prosta rzecz a kilka godzin mi zajęło rozwiązanie problemów z tworzeniem dynamicznej tekstury tla.

W najbliższym czasie czeka mnie stworzenie systemu dodawania równego typu elementów do listy elementów oraz wyświetlanie ich. Zastanawiam się jeszcze czy nie będę musiał rozwiązać problemu z przewijanie mam tej listy jeżeli będzie dużo elementów a sam panel listy będzie zbyt mały.

Ale jak to mówią. Wszystko wyjdzie w praniu.

Update #2

Update #1

Mało brakowało i bym zapomniał…

Ostatnio dość sporo czasu poświęciłem na pisanie gry choć dużych postępów może nie widać ale są. Jak zaktualizuje gita to na pewno zainteresowani znajdą nowości. Dziś a w zasadzie wczoraj (niedziela) spędziłem praktycznie cały dzień przed komputerem. Mimo to nie miałem całego dnia na pracę tylko nad grą ale nie pozwoliłem aby kod został nietknięty.

Niestety jest już dość późno więc tym razem przejdę szybko do nowości od ostatniego update bo martwię się żebym nie zasnął przed komputerem.

Co z nowości?

  • Dodano główną klasę GUI
  • Dodano obsługę elementów GUI
  • Dodano LabelElementGui do wyświetlania samego tekstu
  • Dodano ButtonElementGui (jeszcze nie wszystko zostało zaimplementowane)
  • Dodano tekstury do GUI znalezione w internecie
  • Zmieniono licznie środków obiektów dla tekstur

W następnym update powinien pojawić się skończony button w gui oraz implementacja zachowania po kliknięciu oraz dodanych kilka nowych elementów do gui. Czyli na chwilę obecną praca będzie tylko nad gui.

Update #1

Update #0

Czemu taki odstęp czasowy z wpisami?

No i tu przyszedł czas na małe wytłumaczenia. Kilka dni temu doszedłem do wniosku, dlaczego wszystkie moje wcześniejsze projekty szybko upadały. Zawsze wiązało się to z złą organizacją pracy. W związku z tym, że jestem osobą pracującą na dwa etaty więc czasem jest mi ciężko połączyć dwa etaty i dodatkowo jeszcze projekty rozwijane po godzinach. Muszę znaleźć jakiś sposób na lepszą organizację pracy. Pewnie będę musiał wydzielić sobie w swoim kalendarzu co któryś dzień i po kilka godzin na poświęcenie czasu tylko i wyłącznie na rozwijanie własnych projektów po godzinach.

Popyt napędza podaż…

W moim przypadku elementem napędzającym mnie do pracy jest zainteresowanie moimi projektami. Od kiedy zacząłem pracę nad aktualnie rozwijanym projektem i nie było żadnego zainteresowania przez moment stwierdziłem, że pewnie to nie ma sensu ale jak zauważyłem nie duże ale zawsze zainteresowanie na samym blogu stwierdziłem, że chyba jednak nie warto porzucać tego projektu i dać sobie spokój. Jeszcze większą motywacją dla mnie był wczorajszy wieczór kiedy odpaliłem laptopa i zobaczyłem, że dostałem maila z github z informacją o komentarzu dotyczącego mojego kodu z podpowiedzą jak można by zrobić coś lepiej.

co nowego?

  • Implementacja ładowania atlasów tekstur
  • Utworzenie klas mapy, kafelków oraz obiektów umieszczanych na kafelkach

Niestety nie ma tego dużo ale niestety nie miałem zbyt dużo czasu. Za tydzień pojawi się kolejny update, w którym mam nadzieję, że będzie już większa ilość nowych funkcjonalności.

Github: https://github.com/polkom21/restaurant-tycoon
Ostatni commit: https://github.com/polkom21/restaurant-tycoon/commit/fe8f4488361c8f706918d343732bf0e60d4ddd59
Trello: https://trello.com/b/Tmbhyirp/restaurant-tycoon

Update #0

Czas zabrać się do pracy.

Nie zdawałem sobie sprawy jak trudna jest odpowiednia organizacja czasu aby dać radę wyrobić się z wszystkimi zaplanowanymi zadaniami. Podejmując się wzięcia udziału w konkursie zdawałem sobie sprawę, że na pewno będzie dla mnie największym problemem regularne dodawanie wpisów na blogu.

Na sam początek może przydało by się kilka słów o samym pomyśle. Nie wątpię w to, że porywam się z motyką na słońce z tym pomysłem ale zawsze marzyłem o stworzeniu tego typu gry (nie mówiąc tu o tym, że największym marzeniem było stworzenie samej gry). Otóż ma to być gra ekonomiczna. Od dzieciaka zawsze lubiłem grać w gry typu tycoon ekonomiczne, których wcale nie ma aż tylu na rynku gier. Jako, że ostatnio pojawiło się bardzo dużo symulatorów przeróżnego gatunku ale nie było tam żadnej produkcji, gdzie głównym tematem jest gastronomia postanowiłem podjąć wyzwanie stworzenia właśnie takiej gry.

Zawsze na początku tworzenia projektu jest problem na wymyślenie oryginalnej nazwy. Ja w tym przypadku wcale nie miałem tak trudno. Gra będzie nosić nazwę Restaurant tycoon i chyba nie muszę tłumaczyć dlaczego tak samo jak nie muszę rozpisywać się nad tym o czym gra będzie bo to wydaje się być oczywiste.Chciał bym jedynie aby było to coś bardziej rozbudowanego w sztuczną inteligencję postaci. W zamiarze są przeróżne wydarzenia, które mogły by się wydarzyć w normalnym życiu. Chcę aby gra nie była przewidywalna dzięki czemu na pewno szybko się nie znudzi.

Przejdźmy teraz trochę do części technicznej. Gra na pewno będzie wykonana w grafice 2.5D w rzucie izometrycznym. Akurat wymyśliłem sobie coś takiego bo nigdy styczności z czymś takim nie miałem jeszcze podczas tworzenia projektów. Na chwilę obecną biblioteki wykorzystywane do tworzenia projektu to SFML. Zastanawiam się jeszcze nad użyciem biblioteki Box2D ale chyba nie będzie mi potrzeba w tym projekcie aż taka zaawansowana fizyka więc moje umiejętności i wiedza powinny wystarczyć.

Jeżeli chodzi o czysto techniczne aspekty softwerowe to będę pisał projekt w Microsoft Visual Studio Community 2015. Do obsługi repozytorium na chwilę obecną będzie mi służył SourceTree ale nie dam sobie ręki uciąć czy nie zmienię go prawdopodobnie na GitKraken. Oczywiście co to by była za gra bez grafiki (choć nie mówię, że się nie da). Do tego typu zadań będę korzystał z programu OpenSource Blender. Można by powiedzieć, że trochę mnie porypało, że do gry 2.5D chcę używać programu do grafiki 3D ale tak. Będę renderował stworzone modele do gry w tym oto programie.

Wydaje mi się, że jak na ogólny zarys projektu można taki opis zakończyć. Na pewno w trakcie tworzenia projektu będą pojawiały się nowe pomysły, których pewnie część zostanie zaimplementowana a część odjedzie w niepamięć lub zostanie tylko pomysłami niezrealizowanymi na białej kartce papieru.

Czas wykreować sobie nowy cel życiowy:

W każdą niedzielę wieczorem lub poniedziałek rano dodać wpis na bloga o postępie prac nad projektem chociażby nawet jeżeli nie było by żadnego progresu.

P.S. Tak z góry mogę przeprosić za moje niezbyt zaawansowane wpisy ale nie jestem zawodowym pisarzem i czasem ciężko jest ująć wszystko to co by się chciało w odpowiednie słowa. Gramatyka i stylistyka też u mnie kuleje (przecież jestem programistom więc znam się tylko na stylistyce kodu)  więc przepraszam za to, że może trudno się czytać moje wypociny.

Czas zabrać się do pracy.

Daj się poznać 2017

Postanowiłem po raz kolejny rozpocząć pracę nad blogiem. Wstyd się przyznać (a może jednak nie) ale to już chyba po raz 10 zabieram się do tej czynności. Tym razem zainspirowała mnie aktualna edycja konkursu „Daj się poznać 2017”, w której chcę wziąć udział. Nie ma co tu się ukrywać, że dla każdego konkurs kojarzy się z nagrodami. Tak jest i w tym przypadku. Ale jeżeli o mnie chodzi to jest to dla mnie okazja poznać coś nowego jako programista. Chodzi tu o blogowanie oraz o korzystanie z git’a.

Na co dzień zajmuję się tworzeniem stron internetowych natomiast ten konkurs będzie dla mnie odskocznią od codzienności. Mam okazję zrealizować marzenia o stworzeniu gry od początku do końca. Wszystkie dotychczasowe projekty bardzo szybko umierały, i niektóre z nich mam zamiar reanimować w przyszłości ale teraz mam w planach coś nowego. Będzie to gra strategiczno – ekonomiczna. Więcej szczegółów o projekcie pojawi się w kolejnych wpisach (taka auto motywacja do dalszego pisania dla autora).

Jeżeli jesteś tu przypadkiem i zainteresował Cię konkurs to jak najbardziej też możesz zostać uczestnikiem. Wystarczy, że wejdziesz TU i dowiesz się większej ilości szczegółów na temat samego konkursu.

Daj się poznać 2017