The only available tutorial that I know of is this one
. (I actually didn't watched it)
This is for mods, a scenario has a few more restrictions : you can't edit the data.raw. Basicaly : you cannot "create/define" new entities, you can only use and modify the existing ones.
If you know a bit about programming, all you're gotta need is the api documentation
Best way to get information is to check any lua files from the factorio directory (base files or mod files)
What I can say about making a scenario :
- you're "access point" to the game logic is via event handlers : for instance you can generate client's UIs in the "on_player_joined_game" then use "on_gui_clicked" (and then checks which button triggered the event) for more advanced UI interactions.
- Any variables that needs to be stored (and shared among peers) shall be put in the global table : for instance, if you use a custom, variable list of whatever, you'll need to store this list as global.my_list_name
- Avoid as much as possible the use of on_tick event as it's triggered 60 times a sec (at least move away any heavy code from there) but
- You'll need the on_tick event whenever you need a clock or a timer
- If you ever need to copy-paste parts of your map, then you'd better "script it out" using LuaSurface:create_entity/LuaSurface:set_tiles/etc because the map editor is very limited and you'll get more power doing "everything" through scripts (checks how supply-challenge generate its spawns... or even how RSO modifies the map resources)