From 6554800fbd1cafd3369f81e68a4e8a513d4b121c Mon Sep 17 00:00:00 2001 From: Mithril Date: Tue, 16 Dec 2014 00:38:55 +0200 Subject: [PATCH 01/27] Update uk.coffee Added some translations --- app/locale/uk.coffee | 68 ++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/app/locale/uk.coffee b/app/locale/uk.coffee index bae22878f..735d78c94 100644 --- a/app/locale/uk.coffee +++ b/app/locale/uk.coffee @@ -69,7 +69,7 @@ module.exports = nativeDescription: "Українська", englishDescription: change_hero: "Змінити героя" # Go back from choose inventory to choose hero choose_inventory: "Одягнути предмети" buy_gems: "Придбати самоцвіти" -# campaign_desert: "Desert Campaign" + campaign_desert: "Пустельна кампанія" campaign_forest: "Лісова кампанія" campaign_dungeon: "Кампанія підземелля" subscription_required: "Потрібен абонемет" @@ -146,13 +146,13 @@ module.exports = nativeDescription: "Українська", englishDescription: fork: "Форк" play: "Грати" # When used as an action verb, like "Play next level" retry: "Повтор" -# actions: "Actions" -# info: "Info" -# help: "Help" + actions: "Дії" + info: "Інформація" + help: "Допомога" watch: "Стежити" unwatch: "Не стежити" submit_patch: "Надіслати патч" -# submit_changes: "Submit Changes" + submit_changes: "Надіслати зміни" general: and: "та" @@ -163,13 +163,13 @@ module.exports = nativeDescription: "Українська", englishDescription: # submitter: "Submitter" # submitted: "Submitted" commit_msg: "Доручити повідомлення" -# review: "Review" + review: "Огляд" version_history: "Історія" version_history_for: "Історія версій для: " -# select_changes: "Select two changes below to see the difference." -# undo: "Undo (Ctrl+Z)" -# redo: "Redo (Ctrl+Shift+Z)" -# play_preview: "Play preview of current level" + select_changes: "Оберіть дві зміни нижче, щоб побачити відмінності." + undo: "Відмінити (Ctrl+Z)" + redo: "Повторити (Ctrl+Shift+Z)" + play_preview: "Попередній перегляд поточного рівня" result: "Результат" results: "Результати" description: "Опис" @@ -344,7 +344,7 @@ module.exports = nativeDescription: "Українська", englishDescription: prompt_title: "Недостатньо самоцвітів" prompt_body: "Хочете отримати ще?" prompt_button: "Увійти до крамниці" -# recovered: "Previous gems purchase recovered. Please refresh the page." + recovered: "Попередні покупки самоцвітів відновлені. Будь ласка, поновіть сторінку." subscribe: subscribe_title: "Взяти абонемент" @@ -385,7 +385,7 @@ module.exports = nativeDescription: "Українська", englishDescription: regeneration: "Відновлення" range: "Дистанція" # As in "attack or visual range" blocks: "Блокує" # As in "this shield blocks this much damage" -# backstab: "Backstab" # As in "this dagger does this much backstab damage" + backstab: "Зі спини" # As in "this dagger does this much backstab damage" skills: "Вміння" available_for_purchase: "Можна придбати" # Shows up when you have unlocked, but not purchased, a hero in the hero store level_to_unlock: "Розблокується на рівні:" # Label for which level you have to beat to unlock a particular hero (click a locked hero in the store to see) @@ -480,7 +480,7 @@ module.exports = nativeDescription: "Українська", englishDescription: forum_prefix: "Для будь-яких публічних обговорень, будь ласка, використовуйте " forum_page: "наш форум" forum_suffix: "." -# where_reply: "Where should we reply?" + where_reply: "Куди ми повинні відповісти?" send: "Надіслати відгук" contact_candidate: "Сконтактуватися з кандидатом" # Deprecated recruitment_reminder: "Використовуйте цю форму, щоб перейти до кандидатів, з котрими Ви б хотіли провести співбесіду. Пам'ятайте, що CodeCombat знімає 18% ЗП за перший рік. Плата проводиться за наймом співробітника і підлягає відшкодуванню протягом 90 днів якщо працівник не залишить роботу. Часткова зайнятість, дистанційна робота та наймані працівники не оплачуються, так само як інтерни." # Deprecated @@ -534,9 +534,9 @@ module.exports = nativeDescription: "Українська", englishDescription: continue_script: "Продовжити поточний скрипт." skip_scripts: "Пропустити усі скрипти, які можна пропустити." toggle_playback: "Перемикач гри/паузи." -# scrub_playback: "Scrub back and forward through time." -# single_scrub_playback: "Scrub back and forward through time by a single frame." -# scrub_execution: "Scrub through current spell execution." + scrub_playback: "Перемотування назад і вперед у часі." + single_scrub_playback: "Покадрове перемотування назад і вперед." + scrub_execution: "Перескочити через виконання поточного заклинання." toggle_debug: "Перемикач відлагодження." toggle_grid: "Перемикач сітки." toggle_pathfinding: "Перемикач накладання шляху." @@ -593,9 +593,9 @@ module.exports = nativeDescription: "Українська", englishDescription: more: "Більше" wiki: "Вікі" live_chat: "Online чат" -# thang_main: "Main" -# thang_spritesheets: "Spritesheets" -# thang_colors: "Colors" + thang_main: "Головне" + thang_spritesheets: "Таблиці спрайтів" + thang_colors: "Кольори" level_some_options: "Якісь опції?" level_tab_thangs: "Об'єкти" level_tab_scripts: "Скрипти" @@ -827,21 +827,21 @@ module.exports = nativeDescription: "Українська", englishDescription: recently_played: "Нещодавні ігри" no_recent_games: "Упродовж останніх двох тижнів не зіграно жодної гри." payments: "Платежі" -# purchased: "Purchased" -# subscription: "Subscription" + purchased: "Придбано" + subscription: "Підписка" service_apple: "Apple" service_web: "Веб" paid_on: "Сплачено" service: "Сервіс" price: "Ціна" gems: "Cамоцвіти" -# active: "Active" -# subscribed: "Subscribed" -# unsubscribed: "Unsubscribed" -# active_until: "Active Until" -# cost: "Cost" -# next_payment: "Next Payment" -# card: "Card" + active: "Активна" + subscribed: "Підписана" + unsubscribed: "Не підписана" + active_until: "Активна до" + cost: "Ціна" + next_payment: "Наступний платіж" + card: "Карта" status_unsubscribed_active: "У Вас немає передплати і рахунок Вам не прийде, але Ваш акаунт і далі дійсний." status_unsubscribed: "Отримайте доступ до новних рівнів, героїв та бонусів з абонементом CodeCombat!" @@ -902,7 +902,7 @@ module.exports = nativeDescription: "Українська", englishDescription: clas: "CLA" play_counts: "Кількість ігор" feedback: "Відгук" -# payment_info: "Payment Info" + payment_info: "Інформація про платіж" delta: added: "Додано" @@ -1007,14 +1007,14 @@ module.exports = nativeDescription: "Українська", englishDescription: done_editing: "Завершити редагування" profile_for_prefix: "Профіль для " profile_for_suffix: "" -# featured: "Featured" -# not_featured: "Not Featured" + featured: "Включає" + not_featured: "Не включає" looking_for: "Шукає:" last_updated: "Останнє оновлення:" contact: "Сконтактуватись" -# active: "Looking for interview offers now" -# inactive: "Not looking for offers right now" -# complete: "complete" + active: "Шукаю пропозиції роботи в даний час" + inactive: "Не шукаю пропозицій роботи в даний час" + complete: "Готово" next: "Далі" next_city: "місто?" # next_country: "pick your country." From 0c88f9f39c1c51d322bd3d1432f0e904483e2afd Mon Sep 17 00:00:00 2001 From: David Nagy Date: Fri, 19 Dec 2014 20:18:08 +0000 Subject: [PATCH 02/27] Update hu.coffee --- app/locale/hu.coffee | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/app/locale/hu.coffee b/app/locale/hu.coffee index 18b371c2d..baed59190 100644 --- a/app/locale/hu.coffee +++ b/app/locale/hu.coffee @@ -1,6 +1,6 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", translation: home: - slogan: "Tanulj meg nyelven programozni, miközben játszol!" + slogan: "Tanulj meg programozni, miközben játszol!" no_ie: "A CodeCombat nem támogatja az Internet Explorer 8, vagy korábbi verzióit. Bocsi!" # Warning that only shows up in IE8 and older no_mobile: "A CodeCombat nem mobil eszközökre lett tervezve. Valószínűleg nem működik helyesen." # Warning that shows up on mobile devices play: "Játssz!" # The big play button that just starts playing a level @@ -69,7 +69,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t change_hero: "Hős váltás" # Go back from choose inventory to choose hero choose_inventory: "Felszerelés" buy_gems: "Vásárolj Drágköveket" -# campaign_desert: "Desert Campaign" + campaign_desert: "Sivatagi Kampány" campaign_forest: "Erdei Kampány" campaign_dungeon: "Várbörtön Kampány" subscription_required: "Feliratkozást igényel" @@ -146,13 +146,13 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t fork: "Villára vesz" play: "Játék" # When used as an action verb, like "Play next level" retry: "Próbáld újra!" -# actions: "Actions" -# info: "Info" -# help: "Help" + actions: "Lehetőségek" + info: "Infó" + help: "Segítség" watch: "Követés" unwatch: "Követés vége" submit_patch: "Kiegészítés bemutatása" -# submit_changes: "Submit Changes" + submit_changes: "Változások véglegesítése" general: and: "és" @@ -163,12 +163,12 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t # submitter: "Submitter" # submitted: "Submitted" commit_msg: "Üzenet feladása" -# review: "Review" + review: "Áttekintés" version_history: "Verzió történet" version_history_for: "Verzió története ennek: " -# select_changes: "Select two changes below to see the difference." -# undo: "Undo (Ctrl+Z)" -# redo: "Redo (Ctrl+Shift+Z)" + select_changes: "Válassz két lehetőséget alul, hogy lásd a különbséget." + undo: "Vissza (Ctrl+Z)" + redo: "Újra (Ctrl+Shift+Z)" # play_preview: "Play preview of current level" result: "Eredmény" results: "Eredmények" @@ -300,12 +300,12 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t tip_documented_bug: "A dokumentált programhiba már nem hiba; az már jellegzetesség." tip_impossible: "Mindig lehetetlennek tűnik, amíg meg nem tetted. - Nelson Mandela" tip_talk_is_cheap: "Dumálni könnyű. Mutasd a kódot!. - Linus Torvalds" -# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay" -# tip_hardware_problem: "Q: How many programmers does it take to change a light bulb? A: None, it's a hardware problem." -# tip_hofstadters_law: "Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law." -# tip_premature_optimization: "Premature optimization is the root of all evil. - Donald Knuth" -# tip_brute_force: "When in doubt, use brute force. - Ken Thompson" -# tip_extrapolation: "There are only two kinds of people: those that can extrapolate from incomplete data..." + tip_first_language: "A legszörnyűbb dolog, amit valaha tanulhatsz, az az első programnyelved. - Alan Kay" + tip_hardware_problem: "Kérdés: Hány programozó kell egy lámpakörte kicseréléséhez? Válasz: Egysem, ez hardware-es hiba." + tip_hofstadters_law: "Hofstadter törvénye: Mindig tovább tart, mint ahogy tervezted. Még akkor is, ha figyelembe vetted Hofstadter törvényét." + tip_premature_optimization: "Minden rossz gyökere a korai optimizáció. - Donald Knuth" + tip_brute_force: "Ha kérdésesa helyzet, használj nyers erőt. - Ken Thompson" + tip_extrapolation: "Csak két fajta ember létezik. Az egyik, aki extrapolál hiányos adatokból..." game_menu: inventory_tab: "Raktár" @@ -524,7 +524,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t view_profile: "Nézd meg a profilodat!" keyboard_shortcuts: -# keyboard_shortcuts: "Keyboard Shortcuts" + keyboard_shortcuts: "Billentyűparancsok" space: "Syünet" enter: "Enter" escape: "Kilépés" @@ -767,11 +767,11 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # choose_opponent: "Choose an Opponent" # select_your_language: "Select your language!" - tutorial_play: "Gykorlójáték" + tutorial_play: "Gyakorlójáték" # tutorial_recommended: "Recommended if you've never played before" - tutorial_skip: "Gykorlójáték átugrása" + tutorial_skip: "Gyakorlójáték átugrása" tutorial_not_sure: "Nem érted mi folyik?" - tutorial_play_first: "Játssz egy gykorlójátékot először!" + tutorial_play_first: "Játssz egy gyakorlójátékot először!" # simple_ai: "Simple AI" warmup: "Bemelegítés" # friends_playing: "Friends Playing" From 4ca342c3893250048d3120a7e1bbde4c6baa1a5b Mon Sep 17 00:00:00 2001 From: Imperadeiro98 Date: Fri, 19 Dec 2014 20:46:34 +0000 Subject: [PATCH 03/27] Fixed spacing --- app/locale/uk.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/locale/uk.coffee b/app/locale/uk.coffee index 735d78c94..97ce2ae06 100644 --- a/app/locale/uk.coffee +++ b/app/locale/uk.coffee @@ -344,7 +344,7 @@ module.exports = nativeDescription: "Українська", englishDescription: prompt_title: "Недостатньо самоцвітів" prompt_body: "Хочете отримати ще?" prompt_button: "Увійти до крамниці" - recovered: "Попередні покупки самоцвітів відновлені. Будь ласка, поновіть сторінку." + recovered: "Попередні покупки самоцвітів відновлені. Будь ласка, поновіть сторінку." subscribe: subscribe_title: "Взяти абонемент" From b70b82c01969e6d3f678cd17a61dcd926e0c3351 Mon Sep 17 00:00:00 2001 From: Matt Lott Date: Fri, 19 Dec 2014 15:17:20 -0800 Subject: [PATCH 04/27] Help video a/b results - level completion Also using initial event counts to account for weird uneven sampling rates. --- .../mongodb/queries/helpVideoStylesABTest.js | 346 +++++++++++++----- 1 file changed, 261 insertions(+), 85 deletions(-) diff --git a/scripts/analytics/mongodb/queries/helpVideoStylesABTest.js b/scripts/analytics/mongodb/queries/helpVideoStylesABTest.js index 7bcc2b8bd..0d301cb08 100644 --- a/scripts/analytics/mongodb/queries/helpVideoStylesABTest.js +++ b/scripts/analytics/mongodb/queries/helpVideoStylesABTest.js @@ -10,18 +10,49 @@ // - Watched another video // - Level completion rates // - Subscription coversion totals -// TODO: The rest -// - How many people who start a level click the help button, and which one? -// - Need a hard start date when the help button presented +// - TODO: Check guide opens after haunted-kithmaze +// TODO: look at date ranges before and after 2nd prod deploy // 12:42am 12/18/14 PST - Intial production deploy completed var testStartDate = '2014-12-18T08:42:00.000Z'; // 12:29pm 12/18/14 PST - 2nd deploy w/ originals for dungeons-of-kithgard and second-kithmaze -// TODO: move this date up to avoid prod deploy transitional data messing with us. // testStartDate = '2014-12-18T20:29:00.000Z'; +// Moved this date up to avoid prod deploy transitional data messing with us. testStartDate = '2014-12-18T22:29:00.000Z'; +// Only print the levels we have multiple styles for +var multiStyleLevels = ['dungeons-of-kithgard', 'haunted-kithmaze']; + +var g_videoEventCounts = {}; +function initVideoEventCounts() { + // Per-level/style event counts to use for comparison correction later + // We have a weird sampling problem that doesn't yield equal test buckets + + print("Querying for help video events..."); + var cursor = db['analytics.log.events'].find({ + $and: [ + {"created": { $gte: ISODate(testStartDate)}}, + {$or: [ + {"event": "Start help video"}, + {"event": "Finish help video"} + ]} + ] + }); + + while (cursor.hasNext()) { + var doc = cursor.next(); + var levelID = doc.properties.level; + var style = doc.properties.style; + var event = doc.event; + if (!g_videoEventCounts[levelID]) g_videoEventCounts[levelID] = {}; + if (!g_videoEventCounts[levelID][style]) g_videoEventCounts[levelID][style] = {}; + if (!g_videoEventCounts[levelID][style][event]) g_videoEventCounts[levelID][style][event] = 0; + g_videoEventCounts[levelID][style][event]++; + } + // printjson(g_videoEventCounts); +} + function printVideoCompletionRates() { print("Querying for help video events..."); var videosCursor = db['analytics.log.events'].find({ @@ -34,7 +65,7 @@ function printVideoCompletionRates() { ] }); - print("Building video progression data..."); + // print("Building video progression data..."); // Build: