“online baduk”: third place
“online weiqi”: third place (I just changed the language in Google)
All these results from a browser that’s not logged in to Google.
“online baduk”: third place
“online weiqi”: third place (I just changed the language in Google)
All these results from a browser that’s not logged in to Google.
Huh, yeah we should probably work on those search terms sometime
Here presence or absence of “online” in the search terms makes more difference the name of the game. It’s still too close to the server name. The same way, if you search for “internet go server” you’re more likely to find pandanet than anything else, even if you change “go” to “weiqi”. Although with “internet baduk server” you might find WBaduk instead.
Still might be biased if it was logged in to Google and there are some cookies left. Or if you use android device… Or… Ok, this struggle becomes more and more hopeless with each passing day.
OGS’ keyword choice is pretty wise imo.
Modern users don’t use the search term “internet” anymore. It’s like going to Google to search for Google.
The second keyword, Go, is currently still the official name of the game for English speaker.
2 most common search terms in my opinion would be “Online go server” and “Play go online”, both of which are covered in the site’s name.
For someone who already know how to play Go, chance is high that s/he already got a friend who would suggest him/her to play on the same server. But for a new player, the chance is very high that OGS will be the server of choice.
Search term optimization is most important in user acquisition, and ease of use is most important in keeping users from leaving, and in both of those criteria OGS is decades ahead of any other Go server there is. Instant account creation, variations sharing, personal library, free user group creation, automatic daily event, etc. OGS is like an MMORPG that require a team of 50 laboring for 5 years to create, but it’s actually made by 2 persons. On the other side of the scale, I doubt the word “SEO” has even existed at the time KGS’ developers last update their website.
even if some people register 5 times a week for some unknowable reason, i think
1800 registrations a week represents a pretty substantial volume. even if many of
them are lying about their initial rank, that a lot of go newbies starting.
so, very exciting regardless
can you tell us how many of those accounts were still active 4 weeks later?
Yes, it would be interesting to know how many of the countless thousands of new users become active players. I usually see something from 40 to 100 live games being played, which is not much as live servers go… and the chat is not exactly crowded… so I would like to hope all those people are actively playing correspondence!
Another approach- take a rank that is fairly strong, stable, but well populated: 2 dan down to 5 kyu would be reasonable choices. These are ranks that tournament players have, past or present!
Take the number of unique number for that rank (or ranks) registering from EU region
Examine EGD data, you don’t just have to look at active dataset
not sure where the hostility is coming from. sure, i think most of those users probably
abandon their accounts, but still…
Sorry, but there is no particularly hostile intent about my question.
Well instead of doing productive work this afternoon, this question was bugging me and I decided I too was curious about where our new signups were coming from, so here you go:
First our SQL query to dump our most recent new user sign ups.
select count(*)
from (select last_ip, avg(ranking) as ranking from go_app_player where date_joined >= NOW() - INTERVAL '1 WEEK' group by last_ip) a
where last_ip not in (select last_ip from go_app_player where date_joined < NOW() - INTERVAL '1 WEEK');
select count(*)
from (select last_ip, avg(ranking) as ranking from go_app_player where date_joined >= NOW() - INTERVAL '1 WEEK' group by last_ip) a
where last_ip not in (select last_ip from go_app_player where date_joined < NOW() - INTERVAL '1 WEEK')
AND ranking >= 10 ;
select count(*)
from (select last_ip, avg(ranking) as ranking from go_app_player where date_joined >= NOW() - INTERVAL '1 WEEK' group by last_ip) a
where last_ip not in (select last_ip from go_app_player where date_joined < NOW() - INTERVAL '1 WEEK')
AND ranking < 10 ;
COPY (
select *
from (select last_ip, avg(ranking) as ranking from go_app_player where date_joined >= NOW() - INTERVAL '1 WEEK' group by last_ip) a
where last_ip not in (select last_ip from go_app_player where date_joined < NOW() - INTERVAL '1 WEEK')
) TO '/tmp/all_players_last_week.csv' WITH CSV;
COPY (
select *
from (select last_ip, avg(ranking) as ranking from go_app_player where date_joined >= NOW() - INTERVAL '1 WEEK' group by last_ip) a
where last_ip not in (select last_ip from go_app_player where date_joined < NOW() - INTERVAL '1 WEEK')
AND ranking >= 10
) TO '/tmp/established_players_last_week.csv' WITH CSV;
COPY (
select *
from (select last_ip, avg(ranking) as ranking from go_app_player where date_joined >= NOW() - INTERVAL '1 WEEK' group by last_ip) a
where last_ip not in (select last_ip from go_app_player where date_joined < NOW() - INTERVAL '1 WEEK')
AND ranking < 10
) TO '/tmp/new_players_last_week.csv' WITH CSV;
COPY (
select *
from (select last_ip, avg(ranking) as ranking from go_app_player where date_joined >= NOW() - INTERVAL '1 WEEK' group by last_ip) a
where last_ip not in (select last_ip from go_app_player where date_joined < NOW() - INTERVAL '1 WEEK')
AND ranking >= 25 AND ranking <= 31
) TO '/tmp/2d_to_5k_last_week.csv' WITH CSV;
As you can see we are only counting brand new users to the system (we cull out duplicates for the week, as well as throwing away any entries from IPs that we have in the system over all). If you’re following along, the ranking field is an integer that counts up, 0 == 30k, 1 == 29k, 30 == 1d, and so on. So the top three queries are just counting up how many users signed up that as of today are >= 20k and < 20k, i’m saying anyone less than 20k is a new player to the game, > 20k probably came in knowing the game (or just picked a random number).
Console output for running the above SQL script
count
-------
1662
(1 row)
count
-------
514
(1 row)
count
-------
1148
(1 row)
COPY 1662
COPY 514
COPY 1148
COPY 111
So sorry, only 1662 this past week not 1800, but not too shabby for early January.
Next I ran those CSV’s through a python script to tally folks up by country and continent, prints out the new users by continent, and new users by country (the top 20 at any rate).
import csv
import pprint
from collections import Counter
from geoip import geolite2
pp = pprint.PrettyPrinter(indent=4)
for fname in ['all_players_last_week.csv',
'new_players_last_week.csv',
'established_players_last_week.csv',
'2d_to_5k_last_week.csv']:
with open(fname) as csvfile:
print(fname)
f = csv.reader(csvfile)
countries = Counter()
continents = Counter()
for row in f:
ip, ranking = row
match = geolite2.lookup(ip)
country = 'none'
continent = 'unknown'
if match:
country = match.country
continent = match.continent
countries[country] += 1
continents[continent] += 1
continent_list = sorted(continents.items(), key=lambda i: i[1], reverse=True)
pp.pprint(continent_list)
country_list = sorted(countries.items(), key=lambda i: i[1], reverse=True)
pp.pprint(country_list[0:20])
print('')
And here are the results:
all_players_last_week.csv
[ ('NA', 633),
('EU', 620),
('AS', 280),
('SA', 75),
('OC', 31),
('AF', 13),
('unknown', 10)]
[ ('US', 538),
('RU', 113),
('DE', 85),
('TH', 85),
('FI', 80),
('CA', 75),
('GB', 73),
('FR', 54),
('BR', 37),
('TR', 33),
('IT', 27),
('AU', 26),
('KR', 22),
('JP', 21),
('ID', 21),
('NL', 20),
('UA', 20),
('SE', 15),
('RO', 12),
('MX', 12)]
new_players_last_week.csv
[ ('EU', 445),
('NA', 436),
('AS', 165),
('SA', 64),
('OC', 22),
('AF', 9),
('unknown', 7)]
[ ('US', 374),
('RU', 81),
('FI', 66),
('DE', 58),
('TH', 48),
('CA', 46),
('GB', 43),
('BR', 37),
('FR', 35),
('TR', 24),
('IT', 19),
('AU', 17),
('ID', 16),
('NL', 15),
('UA', 13),
('KR', 10),
('AR', 9),
('MX', 9),
('SE', 9),
('BE', 8)]
established_players_last_week.csv
[ ('NA', 197),
('EU', 175),
('AS', 115),
('SA', 11),
('OC', 9),
('AF', 4),
('unknown', 3)]
[ ('US', 164),
('TH', 37),
('RU', 32),
('GB', 30),
('CA', 29),
('DE', 27),
('FR', 19),
('JP', 16),
('FI', 14),
('KR', 12),
('TR', 9),
('AU', 9),
('IT', 8),
('UA', 7),
('TW', 7),
('SG', 7),
('SE', 6),
('NL', 5),
('ID', 5),
('ES', 5)]
2d_to_5k_last_week.csv
[('EU', 45), ('NA', 40), ('AS', 24), ('OC', 2)]
[ ('US', 35),
('GB', 13),
('DE', 10),
('JP', 6),
('FI', 5),
('RU', 5),
('TH', 5),
('CA', 5),
('SG', 3),
('TW', 3),
('NL', 2),
('IT', 2),
('AU', 2),
('KR', 2),
('UA', 2),
('SE', 2),
('BE', 1),
('HU', 1),
('HK', 1),
('TR', 1)]
So there you have it, a break down of new users in the past 7 days by continent and country. Certainly some interesting numbers there.
Now back to real work…
Sorry, it probably sounded harsher than I intended. There was no hostility in my remark, just some general grumpiness. And I’m deadly serious about hoping they play correspondence.
I didn’t mean to imply the devs are lying about the numbers or something like that. I’m just a bit sceptical about those numbers being indicative of much. Say, when you first come to OGS, no guest/demo account is suggested. Instead, if you want to try things out you’re supposed to register, which is easy. So, well, we have a large number of registrations… which is definitely good for the site, but does not nesessary mean the western go-playing community is growing tremendously thanks to OGS.
@anoek Why are there some countries without a value under all_players, when they have a value in the other results? For example AR has 9 new but nothing under all. HK and HU have a 1 each under 2d_to_5K but no values in any of the other results.
Should the sum of established and new always equal the all_players value? When there is a result in all three it
Also, when I did a sum of all the new players results came up with 2085. Is there a reason that this is different from your 1662 number?
Here is a link to the excel document I created with a table of the results.
“New players” are those that specified they never played before. There should be 1148 of those. Note, there is a breakdown by continents first and by countries next, do not add them all together
Also, only first 20 entries were printed from the countries list.
I’m only showing the top 20 countries, so HU / HK showed up under 2d to 5k because of random chance (i’m sure there were several other countries that had only 1 2d-5k sign up as well)
In your excel document you’re mixing in the countries and the continents. Under each CSV there are two lists, the first is continents, which should sum up to the 1662 (or 1148/514/111 values respectively). The second list is the top 20 countries, which will not sum up to those numbers since it’s only the top 20 … i can dump the rest if folks want, it just gets long with a bunch of 1 off sign ups for some of the smaller countries.
Depending on how you measure, we are predominantly a correspondence site in a lot of ways, FTR. Right now we have 15,164 active correspondence games.
Taking the numbers from the login page, that’s about 20 games per person connected. Makes sense. About 0.07 games per person registered.
Thanks for the clarifications - that makes much more sense!
I’d be interested in the full data set if you have time to pull it. Meanwhile, I’ll try to figure out how to pull the data myself this weekend.
Thanks,
Tom
all_players_last_week.csv
[ ('NA', 633),
('EU', 620),
('AS', 280),
('SA', 75),
('OC', 31),
('AF', 13),
('unknown', 10)]
[ ('US', 538),
('RU', 113),
('DE', 85),
('TH', 85),
('FI', 80),
('CA', 75),
('GB', 73),
('FR', 54),
('BR', 37),
('TR', 33),
('IT', 27),
('AU', 26),
('KR', 22),
('JP', 21),
('ID', 21),
('NL', 20),
('UA', 20),
('SE', 15),
('RO', 12),
('MX', 12),
('ES', 11),
('SG', 11),
('AR', 11),
('BE', 10),
('none', 10),
('TW', 10),
('VN', 10),
('IN', 10),
('PL', 9),
('CO', 9),
('CL', 9),
('BG', 8),
('RS', 8),
('IL', 8),
('CN', 8),
('LT', 8),
('HU', 7),
('PH', 7),
('MY', 7),
('CH', 7),
('HK', 6),
('NO', 6),
('DK', 6),
('GR', 5),
('NZ', 5),
('CZ', 5),
('HR', 4),
('PR', 4),
('EE', 4),
('IR', 4),
('AM', 4),
('PT', 3),
('ZA', 3),
('SK', 3),
('SA', 3),
('VE', 3),
('AT', 3),
('JO', 2),
('BY', 2),
('GE', 2),
('UY', 2),
('PE', 2),
('PK', 2),
('EC', 2),
('MA', 2),
('CY', 2),
('SI', 2),
('DZ', 2),
(None, 2),
('BM', 1),
('JM', 1),
('GH', 1),
('LV', 1),
('EG', 1),
('ME', 1),
('UZ', 1),
('MU', 1),
('MT', 1),
('MZ', 1),
('CR', 1),
('KH', 1),
('SD', 1),
('TT', 1),
('TN', 1),
('LU', 1),
('AE', 1),
('IS', 1),
('AZ', 1),
('IE', 1)]
new_players_last_week.csv
[ ('EU', 445),
('NA', 436),
('AS', 165),
('SA', 64),
('OC', 22),
('AF', 9),
('unknown', 7)]
[ ('US', 374),
('RU', 81),
('FI', 66),
('DE', 58),
('TH', 48),
('CA', 46),
('GB', 43),
('BR', 37),
('FR', 35),
('TR', 24),
('IT', 19),
('AU', 17),
('ID', 16),
('NL', 15),
('UA', 13),
('KR', 10),
('AR', 9),
('MX', 9),
('SE', 9),
('BE', 8),
('RS', 8),
('RO', 8),
('VN', 8),
('IN', 8),
('LT', 7),
('CL', 7),
('none', 7),
('BG', 6),
('PL', 6),
('CH', 6),
('CO', 6),
('NO', 6),
('ES', 6),
('IL', 6),
('DK', 5),
('JP', 5),
('GR', 5),
('NZ', 5),
('HU', 4),
('PH', 4),
('CN', 4),
('EE', 4),
('AM', 4),
('MY', 4),
('SG', 4),
('HR', 3),
('AT', 3),
('HK', 3),
('PR', 3),
('PT', 3),
('TW', 3),
('CZ', 3),
('SK', 3),
('JO', 2),
('DZ', 2),
('PE', 2),
('PK', 2),
('VE', 2),
('IR', 2),
('ZA', 2),
('CY', 2),
('MA', 2),
('GE', 2),
('SI', 2),
(None, 2),
('SA', 2),
('BM', 1),
('LU', 1),
('CR', 1),
('MU', 1),
('MT', 1),
('TT', 1),
('TN', 1),
('LV', 1),
('AE', 1),
('IS', 1),
('EC', 1),
('JM', 1),
('AZ', 1),
('IE', 1),
('ME', 1),
('UZ', 1),
('KH', 1),
('SD', 1)]
established_players_last_week.csv
[ ('NA', 197),
('EU', 175),
('AS', 115),
('SA', 11),
('OC', 9),
('AF', 4),
('unknown', 3)]
[ ('US', 164),
('TH', 37),
('RU', 32),
('GB', 30),
('CA', 29),
('DE', 27),
('FR', 19),
('JP', 16),
('FI', 14),
('KR', 12),
('TR', 9),
('AU', 9),
('IT', 8),
('UA', 7),
('TW', 7),
('SG', 7),
('SE', 6),
('NL', 5),
('ID', 5),
('ES', 5),
('RO', 4),
('CN', 4),
('HU', 3),
('HK', 3),
('PH', 3),
('PL', 3),
('CO', 3),
('none', 3),
('MY', 3),
('MX', 3),
('BE', 2),
('BG', 2),
('BY', 2),
('CL', 2),
('IR', 2),
('CZ', 2),
('AR', 2),
('IN', 2),
('VN', 2),
('UY', 2),
('IL', 2),
('HR', 1),
('VE', 1),
('PR', 1),
('LT', 1),
('EG', 1),
('CH', 1),
('EC', 1),
('ZA', 1),
('GH', 1),
('DK', 1),
('SA', 1),
('MZ', 1)]
2d_to_5k_last_week.csv
[('EU', 45), ('NA', 40), ('AS', 24), ('OC', 2)]
[ ('US', 35),
('GB', 13),
('DE', 10),
('JP', 6),
('FI', 5),
('RU', 5),
('TH', 5),
('CA', 5),
('SG', 3),
('TW', 3),
('NL', 2),
('IT', 2),
('AU', 2),
('KR', 2),
('UA', 2),
('SE', 2),
('BE', 1),
('HU', 1),
('HK', 1),
('TR', 1),
('PL', 1),
('CN', 1),
('VN', 1),
('CZ', 1),
('MY', 1)]
Oh interesting indeed, 10 new users from my country just last week. Is this info taken from the user’s nationality settings or based on their ip address?
This is based on their IP address