GAMEFREAK Programming Contest 2023 (AtCoder Beginner Contest 317)

Can Participate: All Rated Range: - 1999 Penalty: 5 minutes

GAMEFREAK presentsAtCoder2023

コンテスト情報

  • コンテスト時間: 100 分
  • レーティング更新対象: 0 - 1999

ゲームフリーク Programming Contest 2023 概要

『ポケットモンスター』シリーズを初めとしたゲームを企画・開発している、
株式会社ゲームフリーク主催のオンラインプログラミングコンテストです。
参加者限定のオンラインイベントや、就職を検討している学生参加者へ特別選考のご案内も予定しています。

ゲームフリークとは?

■全世界のファンへ届ける「おもしろさ」
「ポケットモンスター」は、ビデオゲーム、カードゲーム、アニメ・映画、グッズ、イベント等多方面に広く展開されており、世界中で多くの方に親しまれているコンテンツです。
ゲームフリークはその歴史のはじまりとなった『ポケットモンスター 赤・緑』をはじめとした、ゲーム『ポケットモンスター』シリーズの企画・開発を手掛けています。

■自ら新規タイトルを提案!「ギアプロジェクト」
つくるのは『ポケモン』シリーズだけではありません。
入社年次や職種関係なく誰もがオリジナルタイトルの企画を提出できる、ボトムアップ型開発制度、ギアプロジェクトがあります。
これまでになかった新しい作品を、私たちと一緒に生み出しませんか。

■R&Dへの取り組み
プログラマとテクニカルアーティストで構成される「研究開発部」があります。
表現技術・エンジニアリングの最新情報をキャッチし、技術開発の方向性をリードしています。
例えば新しいプラットフォームに合わせて環境を提案し、運用をサポートすること。
新しい作品で行いたい表現、扱いたいギミックを実現可能な仕様に落とし込むことがミッションです。

あなたのプログラミングスキル、ゲーム業界で活かしませんか?

ゲームの実装だけではなく、ゲームを作るための環境開発にも、
ゲームフリークではC++をはじめとするスキルが活用できます。

開発に携わるプログラマには、例えば下記のような専門分野があります。

  • ゲームプログラマ

    ゲームプレイ全般の設計・実装に携わり、「遊び」を作る

  • グラフィックスプログラマ

    キャラクタや背景などの「見た目」を、技術を使って向上させる

  • アニメーションプログラマ

    キャラクタの「動き」そのものの自然さや豊かさを、技術を使って向上させる

  • ゲームAIプログラマ

    「ゲーム内の状況に応じ、キャラクタがどう動くか」といった思考パターンを仕組化する

  • エンジンプログラマ

    「キャラクタや背景などの要素を組み合わせ、ゲームを作れる仕組み」を作る

  • ライブラリプログラマ

    メモリやスレッドなど、ハードウェアに近い部分の操作を、簡単かつ高速に行えるよう仕組化する

  • ネットワークプログラマ

    少人数から大人数の人たちとゲームでの体験やデータを共有するために必要な仕組みを作る

  • ビルドエンジニア

    ソースコードやアセットの管理、ビルド、デプロイといった開発基盤を整備する

  • 機械学習エンジニア

    機械学習をゲームに応用できるよう、調査研究する

  • テクニカルアーティスト

    モデルやモーションの制作工程を効率化し、品質を高めるための技術導入を行う


それぞれの分野に専門性をもつプログラマの力を結集し、世界中で楽しんでもらえるゲームを開発しています。
※入社時点でC++を使った開発経験がなかった新入社員も活躍しています。

ゲームをより面白くするため、アイディアを実現するために、問題発見・解決経験のある人材が必要です。
AtCoderで数理的な思考力や、メモリや実行時間を考慮した上でバグが発生しにくいコードを正確に書く実装力を磨いている、あなたの能力が活かせます。

ゲーム開発で使われるアルゴリズム10

ゲーム開発では競技プログラミングで培ったアルゴリズム能力数理的能力を存分に発揮することができます。そこでアルゴリズムの使用例を10個紹介します!

  1. ダイクストラ法

  2. 行列
      キャラクタの移動や回転、3Dグラフィックスのカメラの計算等、3Dゲームには行列は欠かせません。行列のアフィン変換だけではなく、物理エンジンでは連立方程式を解くために行列を使ったり、またゲーム開発に機械学習も導入されてきており行列が多用されます。

  3. 計算幾何
      「モンスターボールがやせいのポケモンに当たったか?」「主人公がたんぱんこぞうの視野に入っているか?」といった判定をする場合、AtCoderでも使われる計算幾何のアルゴリズムがそのまま活用できます。
      また、グラフィックスでのレイトレーシングやカリング、アニメーションでは逆運動学(IK)、ゲームAIではナビメッシュにも使われます。キャラクタの形状を凸包で代用したり、影響範囲の計算にボロノイ図を使用することもあります。
      gif32

  4. 文字列処理
      ゲーム開発で文字列処理が多く行われます。通常のC++のstringクラスでは遅いため、AtCoderでも使われるローリングハッシュのようなハッシュ値を用いた高速化を行います。

  5. 二分探索
      データ検索を中心に二分探索はゲームエンジンのいたるところで使われます。またゲーム開発では、C++ STLにあるデータ構造を改良し自作する場合もあるので、二分探索のような基本的なものでも自前で実装することもあります。AtCoderで自作ライブラリを整備したり高速化するのが好きな方は、ゲームのライブラリプログラマにとても向いています。

  6. グラフ
      木やDAGといったAtCoderで頻出のグラフ構造は、グラフィックスのシェーダーグラフ、アニメーションのブレンドツリー、ゲームAIのビヘイビアツリー、エンジンのタスクグラフシステムのようにどの分野でも使われます。
      依存関係を解析するためにトポロジカルソート、マルチスレッドのデッドロックを解析するために閉路検出のアルゴリズムも使います。また一般グラフであるステートマシン(有限オートマトン)は、AI・アニメーション・ゲーム進行等に用いられます。
      gif62

  7. Union-Find
      キャラクタ同士が隣接しているグループを判定したいときに使えます。また剛体物理エンジンでは、力は接触する物体同士にしか伝わらないのでその判定にUnion-Findを用いたりもします。

  8. バケット法・平方分割
      ゲームフィールド上の全てのキャラクタ同士での判定をせずに近いもの同士だけを処理したいとき、広大なマップで必要なキャラクタのみを読み込みたいとき、バケット法・平方分割・kd-tree・八分木といった領域分割のアルゴリズムが使われます。

  9. メモ化・遅延評価
      「1度計算したものは保存しておき2度目の計算は省略する」といったメモ化をはじめとしたキャッシュ技法はゲーム開発のどの分野でも使われます。
      また、AtCoderで頻出のクエリ処理問題や遅延伝播セグメント木で「評価しなければならない値が存在するとき、実際の計算を値が必要になるまで行わない」という考えがありますが、アニメーションスケルトンの木構造の再計算時にも同様な遅延評価を行うことがあります。

  10. 焼きなまし法・ビームサーチ
      ゲームの複雑な環境下での探索や最適な戦略を求める問題はNP困難になることも多く、上記のアルゴリズムが適用できない場合が多いです。しかし、焼きなまし法・ビームサーチといったメタヒューリスティックスで代用することができます。
      AtCoder Heuristics Contestに参加している皆様はゲーム開発で活躍できることは間違いなしです!

開発環境について

【主要開発言語】C++, C#
【開発言語】C++, C#, C, Javascript, Python, Haxe
【フレームワーク】Unity, Unreal Engine, .NET Framework, DirectX, OpenGL, 自社開発エンジン
【開発環境】Linux, Windows, Amazon Web Service, Microsoft Azure, Visual Studio, Visual Studio Code, Git, Perforce, Subversion など


ゲームフリークでの仕事について

順位特典&抽選特典

各1枚限定!AtCoderコンテスト限定ポストカード(全151種類)
「ゲームフリーク GAMEFREAK Programming Contest 2023」の開催を記念した、151種類のオリジナルポストカードです。
1枚ずつデザインが異なります。どんなポケモンに出会えるか、お楽しみに!

  • 順位特典:対象者の中から総合1位~16位の X人にプレゼント(基本的には1-16位の16名を対象としていますが、同順位が複数いた場合を考慮してこのような書き方をしています。)
  • 抽選特典:対象者の中から抽選で151- X人の方にプレゼント

※対象者とは、1. 1問以上正解していること、2.日本国内に在住していること、3.参加登録情報にすべての項目を記載しており、プライバシーポリシーに同意していること、これらを全て満たしている方を指します。
  • 順位特典は全体の順位ではなく、条件を満たした方から構成される順位により決定します。
  • 賞品は日本国内の宛先にのみ郵送できます。
  • 必要事項をご提供頂けない場合は、賞品郵送の対象外とさせていただきます。
  • ご提供いただく配送先情報は、参加特典発送の用途にのみ使用いたします。
  • 何らかの理由により賞品配送が完了しなかった場合、ご登録いただいたメールアドレスにご連絡します。1週間以内にご返信がない場合、賞品郵送の対象外とさせていただきます。

参加特典

社内競プロerが登場するオンラインイベント開催!
当コンテスト参加者限定のため、ここでしか聞けないトークもあるかもしれません。

開催日時:2023/08/31 (木) 19:30 ~ 20:30
開催方法:オンライン(Zoom)
  • 後日、参加登録いただいたメールアドレス宛に、Zoomのご案内をお送りします。
  • イベントは日本語での開催です。通訳はございません。
  • 学生の方には、ゲームフリークの新卒採用情報のご案内をさせていただくことがございます。
  • 社会人の方には、ゲームフリークの中途採用情報のご案内をさせていただくことがございます。

ゲームフリークAtCoder担当からのお知らせ
2023/8/29 16:00頃、メールアドレスをご登録いただいた方へ参加URLを記載したメールをお送りしました。
受信できていない場合、迷惑メールボックスに入っていないかご確認いただいた上で、
AtCoderアカウント名を添えて atcoder@gamefreak.co.jp 宛に2023/8/31 16:00までにご連絡ください。
参加履歴が確認できた場合、メールを再送いたします。

学生特典

2025年3月末までに高専、専門学校、大学、大学院を卒業・修了見込の方、
あるいは卒業後3年以内の方で、以下の条件に当てはまる方は、
新卒採用選考「適性試験・実技試験」ステップへの進行を確約でご案内いたします。

  • 本コンテストに参加した学生のうち500位以内の方
  • 新卒採用選考エントリー時にレートが「緑」以上の方
本特典を希望される方は、採用選考応募時にメッセージ欄にAtCoderアカウント名をご記入ください。
コンテスト参加履歴の確認ができた場合、特典の対象になります。

配点

問題 点数
A 100
B 200
C 300
D 400
E 425
F 500
G 600
Ex 650

ルール

  1. コンテスト中に問題に正解すると点数を獲得できます。
  2. 順位は総合得点で決定します。
  3. 同点の場合は提出時間の早い人が上の順位になります。
  4. 誤答を提出するたびにペナルティが加算されます。このコンテストのペナルティは5分です。詳細は画面下部の「ルール」をご覧ください。

このコンテストは full-feedback 形式のコンテストです。コンテスト中に提出された結果だけで順位が決定します。

便利情報

採用情報

AtCoder Jobs掲載! その他ポジションは公式サイトで公開中!

pikapika


©2023 Pokémon. ©1995-2023 Nintendo/Creatures Inc. /GAME FREAK inc.
ポケットモンスター・ポケモン・Pokémonは任天堂・クリーチャーズ・ゲームフリークの登録商標です。

Contest Information

  • Duration: 100 minutes
  • Rated Range: 0 - 1999

Point Values

Task Score
A 100
B 200
C 300
D 400
E 425
F 500
G 600
Ex 650

Contest Rules

This contest is full-feedback (solutions are judged during the contest).
When you solve a problem, you get a score assigned to it. Competitors are ranked first by total scores, then by penalties. The penalties are computed as (the time you spend to get your current score) + (5 minutes) * (the number of incorrect attempts).

Useful Links