Mam projekt stworzenia od podstaw gry strategicznej w czasie rzeczywistym. Wciąż jestem na wczesnym etapie planowania, ale trochę programowałem, żeby zobaczyć mechanikę.
Wiem jak programować. Mam również dobry pomysł na to, jak ustrukturyzuję klasy gier i sztuczną inteligencję opartą na regułach (komputer-maszyna) dla gracza komputerowego.
Chcę opracować Doktryny, które nadadzą określone zachowanie konkretnej jednostce (ale mogą być użyte na wielu jednostkach jednocześnie), takie jak Zwiadowca, Podążaj trasą misji, Utrzymaj pozycję (zaatakuj dowolnego zbliżającego się wroga lub wycofaj się, jeśli zostaniesz przytłoczony) itp.
Doktryny będą miały zastosowanie tylko do jednostek, więc będą miały perspektywę jednostki i nie będą świadome na całej mapie mapy.
Komputerowa sztuczna inteligencja przeanalizuje całą widoczną mapę i zdecyduje, do której społeczności przypisać każdą jednostkę w zależności od innego zestawu zasad.
Robię to w C # z OpenGL.
Na razie nie mam dużo, tylko kilka rzeczy w testach, zanim zacznę moją główną koncepcję. Mam pętlę gry, w której odbywa się całe przetwarzanie gry (gdzie będę nazywał aktualizację, walkę, renderowanie itp.) Jedna po drugiej), jest wywoływana bardzo często, jeśli zdarzenie Application.Idle.
Teraz się zastanawiałem. Ponieważ w gameloopie będzie wiele rzeczy do przetworzenia, czy AI komputerowa i jednostki powinny wybrać swoje działania w tej pętli, czy też będzie to zbyt wolne?
Jeśli chcę, aby wszystkie rzeczy odbywały się jednocześnie, Czy powinienem utworzyć osobny wątek dla AI komputera? A może nawet osobny wątek dla każdej jednostki?
Nie mam dużego doświadczenia z wielowątkowością. Jakie byłoby najlepsze podejście do tego?