in procgen/src/basic-abstract-game.cpp [1169:1223]
void BasicAbstractGame::serialize(WriteBuffer *b) {
Game::serialize(b);
b->write_int(grid_size);
write_entities(b, entities);
fassert(!options.use_generated_assets);
// these will be cleared and re-generated instead of being saved
// std::vector<std::shared_ptr<QImage>> basic_assets;
// std::vector<std::shared_ptr<QImage>> basic_reflections;
// std::vector<std::shared_ptr<QImage>> *main_bg_images_ptr;
// std::vector<float> asset_aspect_ratios;
// std::vector<int> asset_num_themes;
b->write_int(use_procgen_background);
b->write_int(background_index);
b->write_float(bg_tile_ratio);
b->write_float(bg_pct_x);
b->write_float(char_dim);
b->write_int(last_move_action);
b->write_int(move_action);
b->write_int(special_action);
b->write_float(mixrate);
b->write_float(maxspeed);
b->write_float(max_jump);
b->write_float(action_vx);
b->write_float(action_vy);
b->write_float(action_vrot);
b->write_float(center_x);
b->write_float(center_y);
b->write_int(random_agent_start);
b->write_int(has_useful_vel_info);
b->write_int(step_rand_int);
asset_rand_gen.serialize(b);
b->write_int(main_width);
b->write_int(main_height);
b->write_int(out_of_bounds_object);
b->write_float(unit);
b->write_float(view_dim);
b->write_float(x_off);
b->write_float(y_off);
b->write_float(visibility);
b->write_float(min_visibility);
grid.serialize(b);
}