Lots of variable names and object names have been changed to be more consistent. Everything is now documented with phpDoc, which makes the code easier to understand. Functions and constants which weren't needed were dropped, and the code takes advantage of PHP5 OOP to be much nicer to work with. Similar groups of functions have been bundled up into static objects, to keep things more organized.
Compatibility with other databases has been dropped. This means phpDip only works with MySQL, but it also means better performance and clearer SQL code. (The code to convert the current database to a 0.8 database currently takes over an hour to complete, because there is so much change and the dataset is so large.)
The way phpDip deals with coasts, and the way orders work (both in the code and the database) is completely changed, and works much, much better. Performance, code clarity, adherence to the official rules, are all improved with 0.8 orders.
The "occupations" table, which stores info about units, coasts, and territories, has been replaced with a TerrStatus table, which is much more consistent and logical.
The map code has been completely scrapped and re-done, with the drawing code and logic code separated. It is much, much easier to alter and understand now.
At the moment there are some games that are so old that they can't be accessed. The occupations table is so large that it had to be split up at various points, and old orders were only recorded using an orderlogs.txt text file.
In 0.8 the old orderlogs.txt files and occupations tables will be pieced back together into proper orders and a full terrstatus table, and old games reconstructed so that all games are accessible, no matter how old. This isn't a key feature for most people, but a consistent database for all the games is something that I really wanted in 0.8.
To keep the working database size within limits old game data is archived into archive tables (something figlesquidge suggested a long time ago), so that when the code changes in the future even the first games will be as accessible as games currently being played.
Users now have different permission levels. There are system accounts; GameMaster and the civil-disorder placeholder players, and there is Admin, Moderator, User, and Banned.
There is now a tab in games where all players can talk to all other players at the same time.
Also code which is only useful in certain places is only included in those places, and it is more logically organized. Now code which is only used for adjudication isn't mixed in with code which is only used for entering orders, which makes things much easier to change.
Instead of showing how many units you have in the game summaries, now the number of supply centers is shown instead, which is more relevant.
Winner-takes-all games, as opposed to points-per-supply-center games. This means that if you don't win you don't get anything, so alliances should only be used if they're going to make it more likely that you win, without compromise.
Okay, that's about all that comes to mind. Most of it is changes to internal code to make development easier, rather than actual features. But it will make adding on features easier, both now and during future development. Here's what's left to do:
The adjudicator! I could easily update the current adjudicator to work with the database changes, but I'd rather make a large update to bring it really close to compliance with the official rules. The database updates will definitely make this easier than it would have been before, but this is what I'm spending most of my phpdiplomacy time looking in to right now, and deciding whether or not it would be worth it. The main issue is the convoys, which make an otherwise simple adjudicator difficult.
A moderator control panel, so that moderators can help me take care of meta-gaming, drawing games, pausing games, etc.
Keeping "total points" separate from "spendable points", so that when you see someone's number of points that number includes the amount they have bet into games, so that when they gain a supply center within a game their total points increases. This will give a better reflection of skill, because at the moment a new player has more points than someone who's in a game.
Make the map able to draw all of the orders differently, and able to display units which are retreating, and make standoff territories more clear, and display which units were created and destroyed.
That's about it. In a lot of ways 0.8 is more of a developer's release than a release containing lots of cool new features. It's more of an investment in future development than anything else, but hopefully that'll pay off in the long run.
0.8 will be out by 18th Feb at the latest, as that's the time when I go back to uni. I want there to be a intermediate release, which has all the database changes but lacks a few features. This will be 0.79, and will let me have a week or two to debug before 0.8 is released with the extras.
I'm also hoping to have ads in 0.8. It's something I'd rather not have, but it's either ads, or I have to work constantly during holidays to support my uni fees.
I think most people would rather see phpDiplomacy.net improve at a consistent rate than not have ads, and if not there'll be an option to donate $10 and not see the ads again. Also moderators, and possibly people who have the highest scores, will not see the ads.
Also if the ads don't pay off I'll drop them, and hope that the features which make development easier will help attract other developers to the project.
That's all from this massive post. Happy Australia day everyone!