Giter Site home page Giter Site logo

ivan-work / evolution-web Goto Github PK

View Code? Open in Web Editor NEW
98.0 98.0 24.0 4.86 MB

Онлайн-версия настольной игры "Эволюция: Происхождение Видов" http://rightgames.ru/games/evolyuciya

Home Page: https://evo2.herokuapp.com

JavaScript 99.38% HTML 0.10% SCSS 0.51% Procfile 0.01%

evolution-web's People

Contributors

djaler avatar evoguest avatar ivan-work avatar knjazh avatar pbsmfs avatar quasistellar avatar yturovtsev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

evolution-web's Issues

Репорты

Сделать систему репортов (типа как с игнором).

При репорте - записать репорт на сервер. Если юзер ВК, то в базу.

При 5 репортах - скрывать сообщения юзера в общем чате от всех кроме него.

При логине - получать список зарепорченных с сервера.

Как-то продумать разбан?

Незакрываемое окно после атаки на удильщика ливера

Игра на двоих.
Второй игрок закрыл вкладку, но игра еще это не зафиксировала
Первый игрок атаковал второго. Это оказался удильщик. Произошла автоматическая контр-атака. Идет таймер.
После того, как игра поймет, что игрок вылетел, игра закончится.

Баг в том, что у первого игрока на экране остается окно реагирования на атаку с выбором чем защититься от удильщика.
Это окно нельзя закрыть и избавиться. В некоторых случаях игроку показывается счет поверх окна реагирования, в других - игрок никак не может посмотреть счет.

Данное окно видят даже зрители.

Фаза засады

Сейчас фаза засады проходит так:

Животное направляется к еде, желающие атаковать активируют засаду, все активированные по очереди нападают на животное.

Это приводит к некоторым неувязкам типа #37

Следует переделать засаду так, чтобы она была рекурсивной:

  1. Животное направляется к еде
  2. Активируется фаза засады
  3. Игроки с засадой либо пропускают, либо жмут на одно существо
  4. ...
  5. GOTO 2

Невозможность атаковать из засады два животных за ход

Ситуация

- continent: $A TailLoss coop$B , $B
- continent: carn amb, carn amb

или

- continent: $A TailLoss , Homeothermy, Homeothermy
- continent: carn amb, carn amb, carn amb

Если первым берет еду животное 1, а вторым животное 2 (по кооперации либо теплокровности), то у второго игрока нет возможности атаковать из засады 2-е животное. Фаза засады наступает, но карта засады недоступна к активации.

Баг

Удильщик горит активным (красным), хотя поверх него есть свойства.

Просмотреть свой сброс и карты животных

Правила игры позволяют просмотреть свой сброс. Но в текущем варианте это не реализовано. Думаю, что достаточно сделать в табличном текстовом виде. Может быть по одной из команд в чате.
Сюда должны также попадать карты, выданные по регенерации и r-стратегии.

Полный фриз игры при атаке на удильщика ливера

phase: feeding
food: 10
players:
- continent: angle
- continent: carn tail ink pois
- continent: carn tail ink pois

В игре больше двух человек. Владелец удильщика вышел, а вместо его имени игра написала ---
Хищник с нескольким не полными защитами атакует удильщика.
Баг 1
Игра ждет выбора свойства для игнорирования, хотя игрок достоверно вышел.
Баг 2
Никто не может продолжать игру. Таймеры останавливаются на 00:00 Всем игрокам необходимо выйти и начать заного.

Считаю, что в случае с ливером удильщик не должен игнорировать свойства атакующего, если у атакующего нет абсолютных защит (большое/камуфляж).

Полный фриз игры при атаке на удильщика из засады

phase: feeding
food: 10
players:
- continent: angle
- continent: carn tail ink pois amb, carn amb

У второго игрока должно быть два хищника в засаде. Когда в засаде только один хищник, то тоже возникает интересный эффект, но не такой фатальный
Удильщик берет еду. Второй игрок активирует засаду (не важно прожимает одну или обе засады.)

Удильщик контр-атакует. Пока удильщик думает какое свойство ему игнорировать нужно еще раз нажать на засаду (не важно ту же, что сейчас в процесе атаки или вторую, соседнюю)

Произойдет контр-контр-атака, удильщик умрет. Но на экране владельца удильщика останется окно с выбором свойств.

Никто продолжить игру не сможет. Владельцу удильщика необходимо будет открывать новую вкладку и заходить под другим именем.

На моем ходу выскакивает это

Error: _i18nReact.default.translate(...).replace is not a function
TypeError: _i18nReact.default.translate(...).replace is not a function
at AnimalTraitDetails.render (webpack:///./client/views/game/animals/AnimalTraitDetails.jsx?:51:82)
at Qg (webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js?:173:192)
at Og (webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js?:172:264)
at Tg (webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js?:180:30)
at bi (webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js?:232:22)
at ci (webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js?:233:284)
at Di (webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js?:249:348)
at Yh (webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js?:248:144)
at Xh (webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js?:245:332)
at qf (webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js?:243:86)

Надпись в окне применения интеллекта

После атаки на удильщика у его владельца возникает окно с выбором свойства для игнорирования.
Точно такое же окно при использовании обычного интеллекта.
Надпись не информативна. Также для новичков не понятен смысл кнопки "не использовать".
Предлагаю надпись

Вы используете контратаку с "интеллектом".
Выберите защитное свойство, которое Вы проигнорируете

anglefish ignor

Маркер 1-го игрока

Предлагается реализовать Маркер 1-го игрока. Некоторым игрокам неудобно постоянно сопостовлять таблицу в верхнем углу с игровым столом.
Реализацию вижу в двух вариантах:

  1. в левом верхнем углу поля игрока рисовать довольно крупно символ 1 в кружочке
  2. в левом верхнем углу поля игрока разместить надпись "первый игрок"

Сценарий "Катаклизм"

На экране создания игры предлагается сделать опцию игры по сценарию "Катаклизм". Этот сценарий включен в последние официальные правила.
Карты выдаются игрокам сразу и поровну. Игра состоит из одного хода. Количество карт и свойств ограничено.

Метаморфоза неоплазии с повышением потребности в еде

Вариант 1
Игра не позволяет накормленному животному без жира метаморфозить неоплазию.

Ожидаемое поведение: Игра должна позволять накормленному животному метаморфозить неоплазию, если за ней находятся выключенные жир либо свойства, повышающие потребность в еде.
По аналогии с тем, что игра позволяет метаморфозить симбиоз и получать после этого еду.

4 примера ожидаемого поведения:
Ж1: живорождение хищник, неоплазия, метаморфоза (на животном 1 еда). После переваривания неполазии станет ненаевшимся и сможет атаковать хищником.
Ж2: хищник, неоплазия, метаморфоза (на животном 1 еда). После переваривания неполазии повторно наестся.
Ж3: жир, неоплазия, метаморфоза (на животном 1 еда). После переваривания неполазии накопит жир.
Ж4: живорождение, неоплазия, метаморфоза (на животном 1 еда) После переваривания неполазии живородит.

Вариант 2
Метаморфоза неоплазии некормленным животным, у которого есть незаполненный жир.
Сейчас игра заполняет жир, но ожидается, что еда должна пойти на прокорм животного у которого увеличилась потребность в еде после отбрасывания неоплазии.

Живорождение не срабатывает при уменьшении потребности в еде

Живорождение не срабатывает при уменьшении потребности в еде в двух случаях:

  • трематода на связанном животном отключается стрекательными клетками.
  • continent: cni, $B carn, mass trema$B vivi +++
  • Работа рекомбинации
  • continent: mass vivi recom$C ++, $C fat

Ограничение количества свойств на одном животном

На этапе создания игры предлагается сделать опцию, которая ограничивает максимально возможное количество карт на одном животном, которое может выложить владелец.
Значение по умолчанию: без ограничений
Рекомендуемое значение: 10 свойств.
Справка: 6 свойств - это один "столбец", 10 свойств - полтора столбца, 14 свойств - два столбца свойств

Это должно сделать игру более динамичной и предотвратить создание совсем уж неубиваемых животных.

От себя предлагаю при посчете максимума не учитывать паразитов, трематод и неоплазий. Скрытый удильщик само собой тоже не учитывается.

Невозможность атаковать свое животное из засады

Игра не позволяет атаковать свое животное из засады.
У этой механики ограниченные способы применения, которые могут быть оправданы ситуацией.

  1. если у жертвы есть отбрасывание хвоста. Тогда в один ход можно получить 2 фишки: одну из кормовой базы, вторую - за свой хвост, да еще и отбросить что-то не нужное
  2. испугать свое животное. Если у своего животного есть например "отбрасывание+пугливое", то можно предварительно его испугать, чтобы противостоять чужому интеллектуальному хищнику.
  3. Вскрыть своего удильщика (может быть так же как в п. 1 либо для других целей)

Если у игрока нет на столе удильщика, отбрасывания хвоста или пугливого, то смысла атаковать своих нет. Поэтому возможность атаковать своих нельзя вводить по-умолчанию, иначе таймеры сильно растянут игру.

Пропуск хода во время фазы развитие

Иногда один из игроков не может использовать карты во время фазы развитие. Карты неактивны. Не выполняется переключение после выкладывания карты противником.
Игра на 2 игровка

Живорождение после стрекательных клеток

phase: feeding
food: 10
players:
- continent: carn vivi ++, cni

Если хищнику до атаки была необходимо 1 или 2 еды до накормелнности, то после атаки на стрекательные клетки игра активирует живорождение. По правилам стрекальные клетки должны выключать все свойства до их срабатывания (например, сотрудничество)

Переименовать кнопку "Закончить фазу" при наличии еды

В случае если в кормовой базе есть еда, а у игрока есть ненакормленные животные или пустой жир, то на большой зеленой кнопке вместо "Закончить фазу" писать "Автоход".
Лично меня эта надпись "закончить фазу" сильно смущала при знакомстве с сайтом, т.к. в данном случае не соответствует истине.

Выбор отдельных свойств на экране создания игры

Т.к. есть некоторые мнения на счет карт из подарочного набора предлагается сделать на экране создания игры поле "подарочный набор" составным. При нажатии на которое появляется выпадающий список на котором можно галочками отметить свойства из допа, которые будут учавствовать в игре: R-стратегия, теплокровное, пугливое.

Уничтожать карты ливера в начале следующего хода

Сейчас карты ливера убираются из игры только тогда, когда они умирают от голода.
Но в некоторых случаях карты выживают

  1. они были накормлены до вылета игрока
  2. падальщик
  3. умершая регенерация.

Считаю, что нет разумных объяснений зачем оставлять в игре выжившие карты ливера в следующем ходу.
Более того, участники игры могут бесконечно есть регенерацию ливера. Из этого два следствия: необоснованная дополнительная еда, игра расходует колоду на восстановление регенерации, хотя ей никто не управляет.

Контр-атака хищного растения. Выбор игроком свойства для игнорирования

При контр-атаке хищного растения оно по правилам игнорирует одно любое защиное свойство по желанию игрока "справа".
В данный момент это не реализовано. Например, у животного со свойствами: отбрасывание хвоста, бег, чернильное облако. Автоматически игнорируется самое нижнее свойство без права выбора.

Механика. Закрепить связку карт "интеллект-жертва". Повторное использование интеллекта с новым хищником.

Предлагается реализовать механику, которая укладывается в существующие правила.
Закрепить связку интеллект-жертва вне зависимости от перехода этих карт карт по рекомбинации.
Данная механика обсуждалась здесь https://vk.com/topic-36567706_26132044?post=6753

Пример 1
Интеллект целится в карту "большое". Первая атака отбивается чернильном облаком, после чего большое пеходит по рекомбинации на другое существо $C. В данном случае связка сохраняется и игра позволяет интеллекту атаковать существо $C

  • continent: carn intel recom$B, $B carn fat, mass ink recom$C, $C fat

Пример 2
Интеллект целится в карту "большое". Первая атака отбивается бегом, после чего интеллект передается по рекомбинации существу $B. Игра не позволяет снова атаковать "большое" новому хищнику.

  • Необходимо закрепить связку "интеллект-жертва" не только для рекомбинации жерты, но и для рекомбинации интеллекта.

  • continent: carn intel recom$B, $B carn fat, mass run

Пример 3

  • реализовать возможность повторного применения интеллекта (уже нацеленного на определенное свойства) с новым хищником, перекинутым по рекомбинации

  • Дополнительно предлагается ввести публичное обозначение того, что свойства связаны. Например, можно их обоих заштриховать каким-либо цветом или просто подчеркнуть. Когда жертва сбрасывается, то интеллект закрасить серым, как и все отработавшие свойства. В конце хода сбросить все штриховки.
    Если у использованного интеллекта нет рекомбинации и хищник больше не может атаковать, то закрашивать интеллект сразу серым не дожидаясь сбрасывания карты или окончания хода.

Удильщик сохраняет интеллект

Если контр-атака удильщика была перенаправлена с помощью мимикрии на стрекательные клетки, то у хищника-удильщика сохранится интеллект.
В следующем ходу возможно использовать вкрытого удильщика как обычного хищника с интеллектом.
Важна последовательность действий. Сначала удильщик должен быть перенаправлен, а потом получить стрекательные клетки, иначе баг не проявится.

phase: feeding
players:
- continent: carn mimi mass, cni, Anglerfish

Метаморфоза верхнего незаполненого жира

У животного есть несколько незаполненных жиров. Животное накормлено. Игрок метаморфозит верхний жир.
Верхний жир отбрасывается, но нижний жир не заполняется.
Возможная игровая тактика: уменьшение количества карт при полете.
- continent: fat flight meta fat +
еда идет в верхний жир, который тут же сбрасывается.

dispatch(server$startFeeding(game.id, sourceAnimal.id, 1, tt.TraitMetamorphose));
dispatch(server$traitAnimalRemoveTrait(game, sourceAnimal, targetTrait)); 

Если метаморфируемый жир единственный у животного, то у игрока должна быть возможность его скинуть, но еду он не получит, если уже был накормлен.

Запоминать настройки игры

Запоминать (на какое-то время) настройки игры, которые создавал игрок
имя, таймеры, количество игроков, количество карт, допы.
Как вариант использовать куки.

При создании новой игры данным игроком автоматически подставлять запомненные значения.

Таймер последних секунд

  • Предлагается сделать звук таймера последних 10 секунд немного потише. Цель звука обратить внимание игрока на время, а не мешать ему думать.
  • Если время хода выставлено 15 секунд и меньше, то предлагается сделать звук отчета не на последних 10 секундах, а на последних 5 или 3 секундах. Если от 15 до 20 секунд, то звук начиная с 8-й секунды. Более 20 секунд - как обычно, начиная с 10й секунды.

Порядок срабатывания падальщиков у одного игрока

Не реализован механизм выбора игроком кто из своих собственных падальщиков получит еду при смерти животного.
Сейчас падальщики получают еду строго слева-направо даже у одного игрока.
Правила игры не ставят ни в какую зависимость взаимное расположение животных на столе.

Если это будет реализовано, то для уменьшения задержек в игре лучше данный выбор делать заранее и не выделять на это отдельный таймер.

Увеличение игрового пространства

Для увеличения игрового пространства предлагается переделать верхнюю зеленую полоску с надписями "комната", "об игре". Либо переосмыслить ее функционал.
Необходимо сделать ее скрывающейся либо автоматически, либо по кнопке. (например, по аналогии с тем, как сделана кнопка "скрыть" рядом с кнопкой "пауза").
Ограниченность игрового пространства начинает остро ощущаться при игроке больше 4-х людей.

Автоматические действия игры (ускорение)

Предлагается расширить список автоматических действий, которые игра делает за игрока, ради ускорения игрового процесса. Во время действия игры действия игрока разумеется блокируются.

  • В любой момент игры (как в начале фазы, так и в начале действия какого-либо игрока) если у игроков не осталось ни одного активируемого действия и при этом еды хватает на всех ненакормленных животных и их жир. Игра автоматически берет еду за всех игроков в ускоренном режиме.

  • Если у игрока единственное животное без активируемых свойств.

  • Если все животные всех игроков наелись, весь жир набран, на карте нет рекомбинации и неоплизации, ни у кого из игроков нет активируемых свойств, но на карте есть топотун. То не ждать пока топотун вытопчет всю еду, а сразу переходить к новому ходу. (звучит сложно, но ситуация слишком редкая)

  • На последнем ходу выкладывать с руки карту на умершую регенерацию автоматически, независимо от того сколько карт на руках у игрока (если игрока есть на руках карты).

  • В фазу регенерации автоматически регенерировать с руки игрока любую карту, если у него на руках только одинаковые карты.

  • Автоматическое срабатывание кооперации. Если на обоих связанных животных нет никаких других активируемых свойств.

  • Автоматическое срабатывание сотрудничества. Если на обоих связанных животных нет никаких других активируемых свойств.

  • Пропускать ход игрока в фазу развития, если у игрока на руках нет карт (не ожидать пока игрок нажмет кнопку "завершить фазу" на последнем ходу игры)

  • Автоматически брать защиту (в дополнении растения), если нет других доступных действий и одно животное.

Ограничение количества карт в руке

Предлагаю ввести новую механику, которая может сбалансировать игру.
На экране создания игры добавить опциональное числовое поле: максимальное количество карт в руке. Рекомендемое значение по умолчанию: 13. Минимально: 6 Максимально: без ограничений
Т.е. если в фазе раздачи карт у игрока на руках уже 13 карт, то этому игроку никакие карты не выдаются.
Если у игрока на руках 10 карт и по правилам нужно выдать еще 4 карты, то выдается только 3 карты до максимального количества.
Это предотвратит чрезмерное накопление карт и сделает игру немного динамичнее.

Автофокус каретки на поле "имя пользователя" при входе на сайт

Для того, чтобы после открытия страницы можно было сразу печатать имя, а не наводить мышку на поле "имя пользователя".
Так сделано в яндексе и гугле. При открытии страницы можно сразу печатать без лишних движений.

Cannot read property 'disabled' of undefined

Ошибка вылетела после того, как на мое животное выложили Неоплазию:
[05.08.20 14:15:47] bull выложил Неоплазия на Животное(Симбиоз, Теплокровное)

image

Сделать строку "Диапазон еды от 1 до 5" в фазе развития под строкой "Еда (0)"

Было бы здорово в фазе развития под строкой "Еда (0)" иметь строку "Диапазон еды от 1 до 5" (с учетом появляющихся эдификаторов).
Может быть добавить значки эдификаторов в это поле. Это бы облегчило планирование свойств.

(c) https://vk.com/topic-144914092_35603928?post=444

Мимикрия должна работать раз в ход, а не раз в раунд

Мимикрия

По правилам она действует только один раз в ход. Но игра позволяет это делать несколько раз.
и в догонку. Интерфейс игры не отрисовывает накормленность животных при мимикрии. В результате игроку трудно понять перенаправляет он атаку на голодное или на накормленное существо.

Ход - это вся фаза питания. Впечатление, что у мимикрии нет ограничений вероятно осталось со второй редакции правил в 2012 году.

Мимикрия действовала всегда в I и II редакции до 2012 года.

В 2012 году вышла III редакция (где-то в промежутке между мартом 2012 и ноябрем 2012. Скорее всего в октябре).

Там мимикрия уже действовала 1 раз в ход.

А также в последующих редакциях: "подарочный набор" 1.3.2 2014 год" и 1.4.1 2015 года

mimicry

Не подсвечивать активируемые свойства, если сейчас их нельзя активировать

В данный момент некоторые активируемые свойства подсвечиваются сигнализируя о доступности к активации даже если активация невозможна в данный момент. Это

  • Хищник, когда нет доступных объектов к атаке
  • Пират, когда некого пиратить.

Баг

Исправь бесконечную раковину

English translation

Hey guys, I think it's a good idea to have the game translated to english. English i18n file is outdated beyond recovery, so whoever takes this - please copy ru-ru.yml and translate.

Служебные сообщения в чате

Предлагается добавить в игровой чат дублировать следующие игровые события

  • Игра началась
  • Игрок вышел из игры
  • Игрок был кикнут за таймаут
  • Игрок сделал ход (выставил животное, атаковал и т.д.) Необходимо дать выбор видеть ли игроку такие сообщения. Например, галочкой.

Я считаю, что необходимость в дублировании ходов игроков в чат есть только у очень ограниченного списка событий, это:

  • игра другим игроком трематодой, неоплазией, паразитом, R-стратегией. Все остальные игровые события в чат не дублируются.

Растение-хищник не контр-атакует в некоторых случаях

Растение-хищник не контр-атакует в некоторых случаях. (ниже указаны не все возможные варианты)
Судя по всему а) любое свойство + жир б) либое свойство + интеллект в) некоторые другие комбинации защитных свойств
Также в некоторых случаях имеет значение порядок свойств, а в других случаях - не имеет.

  • continent: mass intel (при этом интеллект на животном становится использованным)
  • continent: fat mass
  • continent: fat run
  • continent: fat amb
  • continent: tail mass

Живорождение рожает два раза за одно действие

Пример:
1-й игрок берет еду. 2-й - атакует из-засады.
Первый - отбрасывает отбрасывание хвоста. После чего рожает сразу двоих!

  • continent: tail vivi +
  • continent: carn amb

Воспроизводится также и с использованием растения-хищника

Живорождение срабатывает с опозданием

Живорождение срабатывает с опозданием
Ситуация

  • continent: vivi homeo tail ++,
  • continent: carn amb, carn amb

Оба хищника нападают из засады. После первой атаки животное отбрасывает теплокровное. Ожидается, что оно должно тут же родить, т.к. наелась. Но этого не происходит. Начитается атака второго хищника из засады.
После второй атаки животное может отбросить живорождение для выживаемости. Поэтому порядок живорождения важен. Сейчас живорождение срабатывает только после второй атаки из засады.

Растения-хищники не контр-атакуют после применения отбрасывания хвоста

Все растения-хищники не контр-атакуют никого (даже голое животное), если было применено отбрасывание хвоста любым животным.

и даже более того: никто из хищников-растений не атакует и в новом ходу, если в прошлом ходу (прошлая фаза питания)! было применено отбрасывание хвоста

Например:

deck: 12 carnivorous
settings:
addon_plantarium: true
phase: feeding
food: 20
plants: PlantCarn +++++, PlantCarn +++++, PlantCarn +++++, Fungus +++
players:
- continent: mass tail, mass tail, mass tail

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.