Sorry I haven’t updated in a while, but the good news is I’ve been totally cranking on the Early-Access Beta! I really appreciate everybody’s patience, especially since I’m so behind schedule on inviting people, but it’s getting close, it really is!
I have a zillion blog posts queued up in draft or idea form, but I don’t want to take any time away from working on the beta to finish any of them, so I came up with this (probably ill-advised) idea: I will post the remaining items left to do before I can invite the first players to join the beta. Then, instead of taking time to write new posts, I’ll just edit this post and strikethrough the items as I do them. Sadly, as with most software development task lists, the items below are at vastly different time and difficulty scales, so they won’t all get checked off at the same rate, and they have an annoying tendency to spawn unforseen subtasks as one digs into them, so the list will grow occasionally too. But, at least this way you can see my progress towards the finish line at a finer granularity than my intermittent tweets.
Even though I’m stupendously late, I’m pretty excited about SpyParty’s development right now, because almost all of the big tasks have been finished. Stuff like auto-updating, crash dump reporting, the installer, and the security system are done, or at least beta quality. Most of the rest of the stuff to do is the myriad loose ends that come along with getting anything ready for public consumption. The two big remaining things are the invite-a-friend feature that I originally wasn’t planning to do for launch, but after your comments here on the blog, on twitter, and on facebook, I decided I simply had to add it, and the text chat feature, which is sort of stubbed in but needs to be improved, since communication is going to be an important part of the experience. It’s going to be really rough to start with, but hopefully it will be good enough to get things started.
I’ve broken up the todo list into three sections: the Website, which means anything you talk to through your browser, including payments and the private beta foums and homepage; the Server, which is the lobby, player and game database, and that sort of thing; and the Game, which is the thing that runs on your machine.
Without further ado, here is the list. You can ask questions in the comments, but do keep in mind that time I spend explaining these things is time I’m not spending checking them off! Also, these are just the tasks to get the first beta invites out, I have infinitely longer and less well defined task lists for later in the beta and beyond. But let’s not think about those right now…
Website
- invite friend to join beta, one invite per person
- mail and homepage needs notes about whether you can talk about game during beta
- please do, indie games need your help to spread the word
- if you have criticisms, I just hope you’ll also tell me (post in forums or email) so I can fix them
- invites
- invite.pl
need to update the intInviteStatus, uncomment the execute line
do initial invites with email
- change invite.pl to not need any email, and just take a count and invite the next group
- cheating
- many ways right now, please just don’t, will make me deal with cheaters now instead of making game
- spectating
- listening for control clicks?
- even multiple people watching sniper side monitor
- switch to CentOS 6
- get backups in order, good test for this!
- audit all the code
- add user to announce mailing list
- block test ipns from doing real work
leaderboard
test newline in display name? need to escape it
style cosign pages
login, login error
logout
change password
only want while logged in for now? yes
style
test cosign logout
definitely does not work in firefox the first time? wtf? look at the cookies?
beta homepage
style
stats
link change password
style rss
display nicer date
- forums
edit account settings – disable change password & email address
update phpbb to 3.0.9
- welcome message, introduction to beta
- stats on profile page
- phpbb how to report bugs
- phpbb faq – update faq.php to add styles/<active>/faq/more_faq.php to the array
error_log in all php code
paypal note about anonymous payments, credit cards, etc.
retry-registration needs to display a page before going to paypal
- mail with details of which cancellation on paypal error?
test paypal flow with non-sandbox
enable IPN, redirect back to page, etc.
what does cc bill show as outside of sandbox?
- start downloading logs
- forward mail? probably better than running pop
- or upload to s3?
Server
when shutting down, don’t allow new connections, just reply with failure message
- why doesn’t the stunserver work when resolving addresses?
- test relay server, at OAK?
- kerberize stun and relay servers
initially just show spy/sniper games played, so user name is displayed as checker (45/67) everywhere
upgrade krb to 1.9.2
- write lobbyclient stress tester app that spews data at server
- log in first sometimes
- use known packet types
- make this the lobbyclient app, and have it be console control as well
- send message to all connections
- don’t make this too general for now, fine to recompile for different stress tests
need to fix pointer output in log for connect/disconnect
send client state info to server for debugging?
yes, at game menu, playing, etc.
server database
async_db clear semantics for db return codes, reg/unreg
store game/match data to db
users records
ranking info
date stamp for login
$inc login count
$inc failed count?
cumulative time logged in! login/match/game times & counts
add usernames to journal filenames (urlescape!)
turn verifies in the lobby ctor into logs so can debug
clients only allowed one game journal per game id
don’t need the random number anymore, given session id in filename
overwrite file on multiple submissions
async_krb5 and async_db error log…have a varargs Log and pass it, also for game
finish updating to new protocol
client<->server
client<->client
hmm, track memory usage and make sure we’re not leaking
output to log file occasionally?
info mallinfo – dev/test/mallinfo.cpp will work on linux
GetProcessMemoryInfo
- async_krb5
- clean up code
- disable all the built-in accounts? or leave them randkey?
Game
“game” -> “match” in ui
handle errors in client<->client authn
switch to — for command line parms?
windowed maximized borderless
network time sync?
it can lag by 5 seconds, which plays fine but seems terrible, better to run Zach’s simple net sync code
merge reliable packets
test motion in joy ps3 driver
make a list grid mode for the chooser, or just obey tabs?
then display other players in lobby and their ranks
- want to display release notes during autoupdate?
- have lobbyserver fetch them?
- displayed while downloading, option in main menu
- send gl versions and cpuid during login?
need to version check on clients
journal match id on client and server
net pause – pause is a nice thing, no?
- test keys disable
- figure out what stuff to collect in the journals, careful of machine name, etc.
- no marketing, or sharing (might publish anonymous stats)
add the appropriate command line parms to the –help! window stuff, etc
fix chat
/me /e[mote] str – print “username str”
/played /age – print playtime stats
/? /h[elp] – print commands
/w[hisper] /t[ell] /m[sg] <username> str – private message to username
/r[eply] str – reply to last person who whispered me
/retell str – send to last person I whispered
/away /afk /dnd [str] – displays str to anyone who whispers me, /away to cancel
/time – lobbyserver time and local time
the chat text is totally unreadable with those colors!
/fps – basic net and video info
completion, cut & paste
support esdf, y invert, config screen
if not fully remappable keys, mention ablegamers list in readme and say will comply soon
logging
async_krb5 and async_db error log…have a varargs Log and pass it, also for game
log printf output to file instead of console
and gzip and send to server?
chat messages to console?
convert to use log function instead of stderr
disable logging by default
or, log to file always for now so crash dump can upload it instead of asserts log
log to pipe and store in spypartyhelper’s memory instead of file?
- update docs/README.txt
put the character name in highlight text? try it.
2011-11-14 18:02:07 – Checked one off already, although I must admit I did the minimum necessary to get it working.
2011-11-17 18:25:17 – Grindy bug fixy day, but finally got the async server db thread semantics clear.
2011-11-30 13:09:31 – Okay, I think the server database stuff is all done, games are saved, results are saved, the player records are updated, etc.
2011-12-06 13:59:23 – The ugliest lobby ever? Maybe.
A team of UI designers worked on this for 5 years.
2012-01-05 11:18:54 – I am calling it for the chat system. I didn’t get to /ignore and /stats and whatnot, but /ignore is not relevant until there are annoying people playing, which I’m sure won’t be the case for a while, and /stats are all displayed in the lobby chooser, so it’s redundant for now.
2012-01-25 16:41:04 – More red strikethroughs! Getting really close!
2012-01-26 15:08:46 – Getting the PS3 DualShock controller to work on Windows is so much more work than it should be. Start by installing the totally unauthorized MotionInJoy drivers! Then mess around with configurations. Don’t even think about getting it working over BlueTooth unless you have certain USB dongles. What year is this? Oh well, it works:
Well, at least now I can say I support 360, PS3, and mouse+keyboard.
2012-02-03 14:24:10 – Finally grinding through the website tasks, which should go pretty quick…*cough*. Here is a screenshot of the saddest page on the blog:
A page you don't want to see in your browser.
2012-02-07 14:27:18 – It’s the worlds ugliest Personalized Early-Access Beta Homepage™ ever!
Well, at least it goes with the ugly lobby.
2012-02-13 14:37:57 – The loneliest leaderboard…
These guys have beta access already and they're not playing more than one game each?! What's wrong with them?