I think I've finished implementing multi-player support, at least to the extent that I'm going to implement it for the initial release of 2.0. I added a menu bar to the run-time form where the game is played. So in windowed mode, you can access the menu to customize the controls for up to 4 players. Each player can use either the keyboard or any gamepad or joystick that Windows knows about. And if they use the keyboard, of course you can customize the keys. This is a step better than 1.x in which you had to define the keys at design time and there was no standard multi-player support (you had to write a script and handle everything about the second player manually).
In the project settings window at design time, there are two new settings: Maximum Players and Maximum Views. Maximum Players determines how many players are in the dropdown list on the Options dialog at runtime (and that's all it affects. Most of the multi-player support is handled by what rules you choose to create in your game). Maximum Views determines how many different views there are for each map. For example, in a 4-player game you can have all players in one view, and make sure none of them can leave that view, or the view can be divided into 4 areas, one for each player. (Or you can have 2 views each with 2 players; arrange it however you want). The maximum number of views just lets the template code know how many views to manage for each map. Then you can define your rules to select any of these views as the current view to perform scrolling on it. Furthermore, at runtime, your rules determine how the views are laid out. You can have 1 single view, 2 side-by-side views, a top and bottom view, or 4 quadrants.
Implementing the subdividing of the views complicated the scrolling a bit because when the view is smaller, it turns out, a layer that scrolls at a rate of 2 can show slightly more tiles than it can in a larger view. But I think I did the best I could in the wizards and I adjusted the way that the map's scroll width and scroll height are defined. So now for the most part it should behave pretty well with respect to making layers the right size to fill the map or finding the right scroll size for the map in order to reach the edges of the layers (these are functions of the wizards).
I updated the sample project I decided to try a split top and bottom view with two similar sprites in the top view (forced to remain within one screen of each other) and a ship in the bottom view. I can press 1 to switch to single-view 1 player mode, 2 to switch into single-view 2 player mode (the two similar sprites), and 3 to switch to split screen 3 player mode. Things seem to be working reasonably well. The bottom half is scrolling independently from teh top half, and as I switch between the number of players (all determined by the way I defined my rules -- not hard coded) I see the screen re-arrange itself and sprites get removed or added for the extra players.
I'm not planning to support network play in the initial release of 2.0, but I expect it would be easier to make a networked game in 2.0 than it was in 1.x (and there was a demo of a network game in 1.x). Could it be as simple as creating a new kind of player besides keyboard and joystick? If you don't mind the possibility of synchronization problems (both players picking up the same item at the same time), maybe. And I suspect it's all possible just by changing the custom code embedded in the project. No need to change the SGDK2 IDE code. I'm pleased that so many of the features are so largely contained in the customizable project code. It means that projects in SGDK2 will be very flexible.
There are just a few details to clean up on multi-player support and then I move on to other clean-up and testing. I have to improve the default keyboard settings when you switch a player from joystick to keyboard control. Right now they all just default to settings similar to those in version 1.x, but I should make each player default to their own set of keys. (Right now, BTW, player 1 defaults to keyboard, and player 2 through 4 default to whatever game controllers are available, all to the same one if only 1 is available. If none are available they default to 4 different keyboard layouts.) Then I have to make it possible to save the player settings when the game is saved.