%% returns list of available games (game engines)
[Game1|OtherGames] = nuk_games:list().
%% returns list of active games
[GameSession2|OtherGameSessions] = nuk_game_sessions:list().
%% start a new game
{ok, GameSession1} = nuk_games:start(Session, Game1).
%% join an existing game
nuk_games:join(Session, GameSession2).
nuk_games:get_state(Session, GameSession1).
nuk_games:move(Session, GameSession1, Move).
nuk_games:leave(Session, GameSession1).
nuk_games:end(Session, GameSession1).
nuk_games:initialize ------> nuk_game_engine:initialize ------> {ok, GameState}
nuk_games:join ------> nuk_game_engine:join ------> {ok, GameState}
nuk_games:start ------> nuk_game_engine:start ------> {ok, GameState}
nuk_games:move ------> nuk_game_engine:move ------> {ok, GameState}
#{
status => Status, % see above
players => [User1, User2, User3, User4],
waiting_turn => [User2, User4],
state => #{
%% other internal state specific to game engine
}
}