anchor.diff:                        , periodic=Periodic
                         , winmod=egambo_tictac:win_module(Width, Height, Run, Periodic)
                         , players=Players
  -                      , status=learning
  +                      , status=Status
                         , layers=Layers
  +                      , version=Version
  +                      , info=Info
                         , network=Network
                         },
           process_flag(trap_exit, true),
  
positive.code: 
  init([GameTypeId]) ->
      Result = try
          #egGameType{engine=Engine, players=Players, params=Params} = egambo_game:read_type(GameTypeId),
          Width=maps:get(width, Params),
          Height=maps:get(height, Params),
          Run=maps:get(run, Params),
          Gravity=maps:get(gravity, Params),
          Periodic=maps:get(periodic, Params),
          Layers=[Width*Height+1|[Width*Height || _ <- lists:seq(2, Width)]],
          Network=ann:create_neural_network(Layers),
          State = #state{ bid=?MODULE 
                        , tid=GameTypeId
                        , engine=Engine
  
negative.code: 
  -behavior(gen_server).          % callbacks provided by (bot) players
  %-behavior(egambo_gen_player).   % callbacks provided by (bot) players
  
  -record(egTicTacAnn, { id         :: {egBotId(), egGameTypeId()}
                       , version = <<>>   :: binary()    % network version name
                       , info     = <<>>  :: binary()    % network description / res
                       , time = undefined :: ddTimeUID() % save time
                       , layers = []      :: list()      % number of layers and neurons per layer
                       , weights = []     :: list()      % neuron weights
                       }).
  
  -define(egTicTacAnn, [ tuple
                       , binstr
                       , binstr
                       , list
                       , list
                       ]).
  % rd(egTicTacAnn, {id=, version=, info=, time= layers=, weights=}).
  
  -record(state,  { bid        :: egBotId()       % bot id (= module name)
                  , tid        :: egGameTypeId()  % game type id
  