LINE
渋谷校のブログ

ゲームプログラミングの始め方を徹底解説!初心者におすすめの学習方法や必要なスキル・将来性とは?

こんにちは、AFRAS渋谷校です!

「ゲームプログラミングって何をするの?」

「プログラミング初心者でもゲームを作れる?」

「ゲームプログラミングを学ぶには何から始めればいい?」

このような疑問を持っている方もいるのではないでしょうか。

ゲームが好きな人のなかには、普段プレイしているゲームを見て「自分でもこんなゲームを作ってみたい」と考えたことがある人もいるでしょう。

ゲームプログラミングとは、プログラミング言語やゲーム開発ツールを使って、キャラクターの動きやゲームのルール、画面の演出などを作り上げる技術です。

以前は専門的な知識が必要というイメージが強かったゲーム開発ですが、現在では初心者向けの開発ツールや学習教材が充実しており、子どもから大人まで挑戦しやすい環境が整っています。

また、ゲームプログラミングを学ぶことで、プログラミングの知識だけでなく、論理的思考力や問題解決力、創造力などを使う機会にもつながります。

一方で、ゲーム制作にはさまざまな工程があり、何から学習すればよいのか迷ってしまう人も少なくありません。

この記事では、ゲームプログラミングの基本的な仕組み、必要なもの、初心者におすすめの学習方法、使用するプログラミング言語、ゲーム開発の将来性について詳しく解説します。

これからゲーム制作に挑戦したい人や、子どもにプログラミングを学ばせたいと考えている保護者の方は、ぜひ参考にしてみてください。

ゲームプログラミングとは?

ゲームプログラミングとは、コンピューターやスマートフォン、ゲーム機などで動作するゲームを制作するために、プログラムを作成することです。

普段何気なく遊んでいるゲームも、さまざまなプログラムによって動いています。

例えば、プレイヤーがボタンを押すとキャラクターがジャンプしたり、敵に攻撃が当たるとダメージを受けたり、一定の条件を満たすとステージをクリアできたりします。

こうした動作は、あらかじめ設定されたプログラムによって実現されています。

ゲームプログラミングでは、どのような操作をしたら何が起こるのかを考え、それをコンピューターが理解できる形で指示していきます。

単にコードを書くだけでなく、ゲーム全体の仕組みを考えながら制作することが特徴です。

ゲームプログラミングと普通のプログラミングの違い

プログラミングは、コンピューターに処理を実行させるための指示を作る技術です。

Webサイトやスマートフォンアプリ、業務システム、AIなど、さまざまな分野で利用されています。

ゲームプログラミングもそのひとつですが、特にキャラクターの操作や画面描画、当たり判定、音声、ゲーム内のルールなどを扱うことが特徴です。

例えば、一般的なWebサイトではボタンを押すと別のページへ移動する処理を作ることがあります。

一方、ゲームではボタンを押すとキャラクターが動いたり、攻撃したりする処理を作ります。

どちらもプログラミングの基本的な考え方は共通していますが、ゲーム制作ではリアルタイムに変化する画面や操作への対応が重要になります。

ゲームプログラミングではどんなものを作れる?

ゲームプログラミングで制作できるゲームには、さまざまな種類があります。

例えば、キャラクターを動かしてゴールを目指すアクションゲーム、敵を倒して進むシューティングゲーム、問題を解いて進めるパズルゲームなどです。

また、3D空間を自由に移動できるゲームや、複数人でオンライン対戦できるゲームもプログラミングによって制作されています。

ただし、ゲームの規模が大きくなるほど必要な知識や制作時間も増えます。

初心者の場合は、最初から大規模な3Dゲームを作ろうとするのではなく、簡単な2Dゲームから始めることがおすすめです。

ゲームプログラミングに必要なもの

ゲームプログラミングを始めるためには、いくつか準備しておきたいものがあります。

ただし、最初から高性能なパソコンや高額なソフトを購入する必要はありません。

作りたいゲームや使用する開発ツールに合わせて、必要な環境を整えていきましょう。

パソコン

本格的なゲームプログラミングを学ぶ場合、パソコンがあると便利です。

プログラミングコードを書いたり、ゲームの動作を確認したり、画像や音声などの素材を管理したりするために使用します。

パソコンにはWindowsやMacなどがありますが、利用できる開発ツールや対応環境はそれぞれ異なります。

また、2Dゲームと3Dゲームでは必要な性能も変わります。

簡単な2Dゲームであれば比較的負荷の小さい環境でも制作できる場合がありますが、高度な3Dゲームを開発する場合には、グラフィック性能やメモリ容量なども重要になります。

まずは使用したい開発ツールの推奨環境を確認してから、パソコンを選ぶとよいでしょう。

ゲーム開発ツール

ゲーム制作には、ゲームエンジンと呼ばれる開発ツールがよく利用されています。

ゲームエンジンには、キャラクターの表示や物理演算、音声再生など、ゲーム制作に必要な機能が用意されています。

これらを活用することで、すべての仕組みをゼロからプログラミングする必要がなくなります。

代表的なゲーム開発ツールには、Unity、Unreal Engine、Godotなどがあります。

また、初心者向けにはScratchのようなビジュアルプログラミング環境もあります。

自分の知識や作りたいゲームに合わせて選ぶことが大切です。

インターネット環境

ゲームプログラミングの学習では、インターネットを利用する機会も多くあります。

例えば、開発ツールのダウンロードやアップデート、学習動画の視聴、公式ドキュメントの確認などです。

また、ゲーム制作中にエラーが発生した場合には、インターネットで解決方法を調べることもあります。

初心者の場合、分からないことを自分で調べながら進める機会が多いため、安定したインターネット環境があると学習しやすくなります。

プログラミングの基礎知識

ゲーム制作では、プログラミングの基本的な仕組みを理解しておくと役立ちます。

特に重要なのが、変数、条件分岐、繰り返し処理などです。

例えば、キャラクターの体力を変数で管理したり、体力がゼロになったらゲームオーバーにしたり、敵を一定間隔で出現させたりする処理に利用できます。

ただし、初心者が最初からすべてを理解している必要はありません。

簡単なゲームを作りながら、少しずつ知識を身につけていく方法でも十分に始められます。

ゲームプログラミングで使われる主な言語

ゲーム制作では、開発するゲームの種類や使用するツールによってプログラミング言語が異なります。

初心者の場合は、最初から複数の言語を学ぶ必要はありません。

まずは作りたいゲームに合った言語をひとつ選び、基本的な仕組みを理解することが大切です。

C#(シーシャープ)

C#は、ゲーム開発で利用される代表的なプログラミング言語のひとつです。

特にゲームエンジンのUnityでは、ゲームの動作を制御するスクリプトの作成にC#が使用されています。

例えば、キャラクターを移動させたり、敵に攻撃したり、ゲーム内のスコアを管理したりする処理を作成できます。

Unityには学習教材も多く、2Dゲームから3Dゲームまで幅広い制作に対応しています。

将来的に本格的なゲーム開発へ挑戦したい人にとって、C#は選択肢のひとつになるでしょう。

C++(シープラスプラス)

C++は、高い処理性能が求められるソフトウェアやゲーム開発などで利用されているプログラミング言語です。

ゲームエンジンのUnreal Engineでも使用されています。

複雑な処理や高度なゲームシステムの開発に対応できる一方、初心者にとっては理解が難しい部分もあります。

そのため、プログラミングを初めて学ぶ場合には、比較的取り組みやすい言語や開発ツールから始め、その後C++へ進む方法もあります。

Python(パイソン)

Pythonは、比較的シンプルな文法が特徴のプログラミング言語です。

AIやデータ分析、業務の自動化など、幅広い分野で利用されています。

ゲーム開発では、Pygameなどのライブラリを使って2Dゲームを制作することができます。

例えば、簡単なシューティングゲームや迷路ゲーム、ブロック崩しなどです。

Pythonはゲーム開発専用の言語ではありませんが、プログラミングの基本的な考え方を学ぶ目的でも活用できます。

JavaScript(ジャバスクリプト)

JavaScriptは、主にWebサイトやWebアプリケーションの開発で使用される言語です。

ブラウザ上で動作するゲームを制作する際にも利用できます。

例えば、Webブラウザで遊べるクイズゲームやパズルゲーム、簡単なアクションゲームなどを作ることができます。

HTMLやCSSと組み合わせることで、ゲーム画面の表示やデザインも調整できます。

Web制作にも興味がある人にとっては、ゲーム以外の分野にも学習を広げやすい言語です。

初心者におすすめのゲーム開発ツール4選

ゲームプログラミングを始める際には、自分のレベルに合った開発ツールを選ぶことが重要です。

ここでは、初心者から本格的なゲーム開発を目指す人まで利用できる代表的なツールを紹介します。

Scratch(スクラッチ)

Scratchは、ブロックを組み合わせることでプログラムを作成できるビジュアルプログラミング環境です。

難しいコードを入力しなくても、キャラクターを動かしたり、ゲームのルールを作ったりできます。

例えば、「右矢印キーを押したらキャラクターが右へ動く」「敵に触れたらゲームオーバーになる」といった処理も、ブロックを組み合わせて作成できます。

特に小学生やプログラミング初心者にとって、最初の学習ツールとして利用しやすいことが特徴です。

Unity(ユニティ)

Unityは、2D・3Dゲームの制作に利用されているゲームエンジンです。

スマートフォン向けゲームやPC向けゲームなど、さまざまなプラットフォームに対応しています。

Unityでは、画面上にキャラクターやオブジェクトを配置し、C#を使って動きを設定できます。

初心者向けの教材も充実しているため、ゲーム制作を本格的に学びたい人におすすめです。

ただし、最初は画面の操作方法や専門用語に戸惑うこともあるため、簡単な作品から始めるとよいでしょう。

Unreal Engine(アンリアルエンジン)

Unreal Engineは、高品質な3Dゲームの制作などに利用されるゲームエンジンです。

高度なグラフィック表現や複雑なゲームシステムを作成できることが特徴です。

また、Blueprintというビジュアルスクリプティング機能を使えば、コードを直接書かずにゲームの動作を組み立てることもできます。

ただし、機能が豊富な分、初心者にとっては操作が難しく感じられる場合があります。

本格的な3Dゲーム制作を目指す人にとって、学習する価値のあるツールです。

Godot(ゴドー)

Godotは、2D・3Dゲームの開発に対応したオープンソースのゲームエンジンです。

比較的軽量な開発環境が特徴で、2Dゲーム制作にも適しています。

主にGDScriptという言語を使用してゲームの動作を作成できます。

ゲーム開発の基本的な仕組みを学びたい人や、自分でゲームを作りながらプログラミングを覚えたい人にとって、選択肢のひとつになるでしょう。

ゲームプログラミングの学び方5選

ゲームプログラミングを学ぶ方法には、さまざまな選択肢があります。

独学で始める方法もあれば、スクールや学校で指導を受ける方法もあります。

自分の年齢や目的、予算などに合わせて学習方法を選びましょう。

1. 学習サイトを利用する

初心者が手軽に始める方法として、プログラミング学習サイトがあります。

インターネット上には、プログラミングの基本的な考え方やゲーム制作の手順を学べる教材が公開されています。

文章や画像を見ながら学習できるため、自分のペースで進めやすいことがメリットです。

ただし、分からない部分が出てきた場合には、自分で調べながら解決する必要があります。

2. YouTubeなどの動画教材で学ぶ

動画教材では、実際の画面操作を見ながらゲーム制作を学べます。

例えば、Unityでキャラクターを動かす方法や、Scratchで簡単なゲームを作る方法などを動画で確認できます。

文章だけでは理解しにくい操作も、画面を見ながら進めることで分かりやすくなる場合があります。

ただし、動画の内容をそのまま真似するだけでは、仕組みを十分に理解できないこともあります。

動画を見ながら作った後は、自分で数値や動きを変更してみると、理解を深めやすくなります。

3. 書籍を使って基礎から学ぶ

ゲームプログラミングの入門書を使う方法もあります。

書籍は学習内容が順番に整理されているため、基礎から段階的に学びたい人に向いています。

特にプログラミングの基本的な文法や考え方を理解する際に役立ちます。

ただし、開発ツールはアップデートによって画面や操作方法が変わることがあります。

書籍を購入する場合は、使用するツールのバージョンに対応しているか確認しましょう。

4. プログラミング教室へ通う

独学で学習することに不安がある場合は、プログラミング教室を利用する方法があります。

教室では、講師からアドバイスを受けながら学習できるため、分からない部分を質問しやすいことがメリットです。

また、課題に沿って作品を制作することで、段階的に知識を身につけられます。

特に小学生や中学生の場合、ゲーム制作を通してプログラミングの基本を学べる教室もあります。

ただし、教室によって扱う教材や開発ツールは異なるため、事前にカリキュラムを確認することが重要です。

5. 専門学校や大学で学ぶ

将来的にゲームプログラマーやゲームクリエイターを目指す場合は、専門学校や大学で学ぶ方法もあります。

専門学校では、ゲーム制作に必要な技術を実践的に学べるコースがあります。

大学では、情報工学やコンピューターサイエンスなど、ゲーム開発にも応用できる幅広い知識を学ぶことができます。

ゲーム制作に関する仕事を目指す場合は、プログラミングだけでなく、数学や情報技術などの基礎知識も重要です。

将来の進路に合わせて学習環境を選びましょう。

初心者がゲームプログラミングを始める5つのステップ

ゲームプログラミングを始めたいと思っても、最初から大きなゲームを作ろうとすると難しく感じてしまうことがあります。

初心者の場合は、小さな作品を完成させながら少しずつ知識を増やしていく方法がおすすめです。

ステップ1. 作りたいゲームを決める

まずは、どのようなゲームを作りたいのか考えましょう。

最初は複雑なゲームではなく、簡単な2Dゲームがおすすめです。

例えば、キャラクターを動かしてゴールを目指すゲームや、ボールを跳ね返すブロック崩しなどです。

完成させやすいゲームを選ぶことで、制作の流れを理解しやすくなります。

ステップ2. 開発ツールを選ぶ

作りたいゲームが決まったら、開発ツールを選びます。

小学生や完全初心者であればScratch、本格的な2D・3Dゲームを作りたい場合はUnityやGodotなどが選択肢になります。

最初から複数のツールを使い分ける必要はありません。

まずはひとつのツールに慣れることを目指しましょう。

ステップ3. 基本的な操作を覚える

開発ツールを導入したら、画面の見方や基本的な操作を覚えます。

例えば、キャラクターを画面に表示する、移動させる、背景を変更するなどです。

この段階では、難しいプログラムを作る必要はありません。

まずは自分が操作した内容によって画面が変化することを体験しましょう。

ステップ4. 簡単なゲームを完成させる

基本操作を覚えたら、小さなゲームをひとつ完成させてみましょう。

例えば、キャラクターを動かしてアイテムを集めるゲームであれば、移動処理、アイテムの取得判定、スコアの表示などを作ります。

完成したゲームがシンプルでも問題ありません。

重要なのは、ゲームを作り始めてから完成させるまでの流れを経験することです。

ステップ5. 自分なりに改良する

ゲームが完成したら、少しずつ新しい機能を追加してみましょう。

例えば、敵を増やす、制限時間を設定する、難易度を変更する、効果音を追加するなどです。

自分で新しい仕組みを考えて実装することで、プログラミングへの理解が深まります。

また、思い通りに動かない場合には、原因を調べて修正する経験も重要です。

ゲーム制作では、こうした試行錯誤を繰り返しながら作品を完成させていきます。

ゲームプログラミングで身につく力

ゲームプログラミングを学ぶことで、コードを書く技術だけでなく、さまざまな力を使う機会があります。

特に子どものプログラミング学習では、ゲーム制作を通して考える力や創造力を育むことが期待されています。

論理的思考力

ゲームを作るためには、「どのような条件で何が起こるのか」を順序立てて考える必要があります。

例えば、キャラクターが敵に触れたときに体力を減らす処理では、接触を判定する条件と、その後に実行する処理を組み合わせます。

こうした仕組みを考えることで、物事を順番に整理する経験につながります。

問題解決力

プログラミングでは、思い通りに動かないことが珍しくありません。

例えば、キャラクターが動かない、スコアが正しく表示されない、ゲームが途中で止まるなどの問題が発生することがあります。

その際には、どこに原因があるのかを調べ、修正する必要があります。

原因を考え、仮説を立て、試して確認するという過程を繰り返すことが、問題解決に取り組む経験になります。

創造力

ゲーム制作では、自分のアイデアを形にすることができます。

キャラクターの動きやステージの構成、ゲームのルールなどを自由に考えられることが魅力です。

例えば、同じ迷路ゲームでも、制限時間を設けたり、アイテムを追加したりすることで、異なる作品になります。

自分で考えた仕組みを実際に動かす経験は、創造力を発揮する機会につながります。

継続力

ゲーム制作では、一度で思い通りの作品が完成するとは限りません。

エラーを修正したり、操作性を改善したりしながら、少しずつ完成へ近づけていきます。

そのため、途中で問題が発生しても諦めずに取り組む姿勢が重要です。

小さな作品を完成させる経験を積み重ねることで、次の目標にも挑戦しやすくなるでしょう。

子どもがゲームプログラミングを学ぶメリット

近年では、小学生や中学生を対象としたプログラミング教育も注目されています。

ゲーム制作は、子どもがプログラミングに興味を持つきっかけのひとつです。

普段からゲームを遊んでいる子どもにとって、「自分でゲームを作れる」という体験は魅力的に感じられるでしょう。

例えば、Scratchを使えば、ブロックを組み合わせながらキャラクターを動かしたり、簡単なゲームを作ったりできます。

また、ゲーム制作では、ただ画面を見るだけでなく、自分で考えた仕組みを実際に動かすことができます。

完成した作品を家族や友達に遊んでもらうことで、達成感を得られる場合もあります。

ただし、ゲームが好きな子どもが必ずプログラミングも好きになるとは限りません。

まずは簡単な体験から始め、本人が楽しめるかどうかを確認することが大切です。

ゲームプログラミングを学ぶ際の注意点

ゲームプログラミングは初心者でも挑戦できますが、学習を続けるためにはいくつか意識しておきたいポイントがあります。

最初から難しいゲームを作ろうとしない

ゲーム制作を始めたばかりの人が、大規模なオンラインゲームや高度な3Dゲームを作ろうとすると、必要な知識の多さに戸惑うことがあります。

最初は簡単なゲームを作り、少しずつ機能を増やしていくことがおすすめです。

小さな作品でも、完成させることで多くのことを学べます。

エラーを恐れない

プログラミングでは、エラーが発生することは珍しくありません。

最初からすべて正しく動かそうとするのではなく、エラーの原因を確認しながら修正することが大切です。

また、エラーが発生したときには、どの操作をした後に問題が起きたのかを整理すると、原因を見つけやすくなります。

学習する目的を明確にする

ゲームプログラミングを学ぶ目的は、人によって異なります。

趣味としてゲームを作りたい人もいれば、将来的にゲーム会社で働きたい人もいるでしょう。

目的によって必要な知識や学習方法は変わります。

例えば、趣味として簡単なゲームを作りたい場合は、初心者向けツールから始める方法があります。

一方、ゲームプログラマーを目指す場合には、プログラミング言語だけでなく、数学やアルゴリズムなどの知識も重要になります。

ゲームプログラミングの将来性は?

ゲームプログラミングは、ゲーム業界だけでなく、さまざまな分野で応用できる技術です。

ゲーム開発で利用される3D表現やリアルタイム処理などの技術は、映像制作やシミュレーション、教育などの分野でも活用されています。

また、ゲーム業界では家庭用ゲーム機やPCゲームだけでなく、スマートフォン向けゲームやオンラインゲームなど、多様なサービスが提供されています。

そのため、ゲーム制作に必要な技術を学ぶことは、将来の選択肢を考えるうえでも意味があります。

ただし、ゲームプログラミングを学べば必ずゲーム会社へ就職できるわけではありません。

ゲーム業界では、技術力や制作経験、チームで開発する能力などが求められます。

将来的に仕事としてゲーム開発に関わりたい場合は、プログラミングの基礎を身につけるだけでなく、自分で作品を制作し、経験を積み重ねていくことが重要です。

AIの発展でゲームプログラマーの仕事はなくなる?

近年では、AIを利用してプログラムの作成を補助する技術も発展しています。

そのため、「将来はAIがゲームを作るようになり、プログラマーが必要なくなるのでは?」と不安に思う人もいるかもしれません。

確かに、AIによって一部のコード作成や作業が効率化される可能性はあります。

しかし、ゲーム開発では、どのような作品を作るのか、プレイヤーにどのような体験を提供するのか、ゲームの仕組みをどのように設計するのかなど、人が判断する必要のある工程も多く存在します。

また、AIが作成したプログラムが正しく動作するかを確認し、問題があれば修正する知識も重要です。

そのため、AIを活用する時代であっても、プログラミングの仕組みを理解することには価値があります。

ゲームプログラミングに関するよくある質問

Q. プログラミング初心者でもゲームを作れますか?

初心者でもゲーム制作に挑戦できます。

Scratchなどのビジュアルプログラミング環境を利用すれば、難しいコードを書かずに簡単なゲームを作ることができます。

まずは小さな作品から始め、少しずつ知識を身につけていくことがおすすめです。

Q. ゲームプログラミングは何歳から始められますか?

ゲームプログラミングを始める年齢に明確な決まりはありません。

小学生でも、年齢や理解度に合った教材を利用することで学習できます。

特に初心者の場合は、Scratchのように視覚的に操作できるツールが取り組みやすいでしょう。

Q. ゲームプログラミングには数学が必要ですか?

簡単なゲームを作る段階では、高度な数学の知識がなくても始められます。

ただし、3Dゲームの開発や物理演算、複雑なゲームシステムの制作では、数学の知識が役立ちます。

最初から難しい数学をすべて理解する必要はありませんが、本格的な開発を目指す場合には少しずつ学んでいくことが大切です。

Q. スマートフォンだけでもゲームを作れますか?

スマートフォンやタブレットで利用できるプログラミング学習アプリやゲーム制作ツールもあります。

ただし、本格的なゲーム開発では、パソコンを使用したほうが作業しやすい場合が多いでしょう。

まずはスマートフォンで簡単なプログラミングを体験し、興味が深まったらパソコンでの制作に挑戦する方法もあります。

Q. ゲームプログラミングは独学でも習得できますか?

独学でも学習することは可能です。

現在では、無料の学習サイトや動画教材、公式ドキュメントなどが充実しています。

ただし、エラーの解決方法が分からず、学習が止まってしまうこともあります。

独学が難しいと感じる場合には、プログラミング教室やスクールを利用する方法も検討してみましょう。

Q. ゲームプログラマーになるには資格が必要ですか?

ゲームプログラマーになるために、必ず取得しなければならない資格は一般的にはありません。

ただし、プログラミングの知識や開発経験、制作した作品などが評価される場合があります。

将来ゲーム開発の仕事を目指す場合は、資格だけでなく、実際にゲームを制作する経験を積むことが重要です。

まとめ

ゲームプログラミングとは、プログラミング言語や開発ツールを使って、ゲームの動作やルール、画面の仕組みなどを制作する技術です。

ゲーム制作には専門的な知識が必要な部分もありますが、現在では初心者向けの学習環境が充実しており、子どもから大人まで挑戦しやすくなっています。

特にScratchやUnity、Godotなどのツールを利用すれば、自分のレベルに合わせてゲーム制作を始められます。

また、ゲームプログラミングを学ぶことで、プログラミングの知識だけでなく、論理的思考力や問題解決力、創造力などを使う機会にもつながります。

初心者が学習を始める際には、最初から難しいゲームを作ろうとせず、簡単な作品を完成させることを目標にしましょう。

そして、完成したゲームを少しずつ改良しながら、プログラミングの仕組みを理解していくことが大切です。

ゲームプログラミングで身につけた知識は、ゲーム業界だけでなく、ITや映像制作など、さまざまな分野にも応用できます。

「ゲームが好き」という気持ちをきっかけに、今度は自分でゲームを作る楽しさを体験してみてはいかがでしょうか。

AFRAS(アフラス)なら、マンツーマンで“学び”に変えられる

AFRAS(アフラス)は、プロ講師によるマンツーマン指導が特徴のeスポーツスクールです。

  • 一人ひとりの目標に合わせて練習内容を調整
  • 質問しやすく、理解が早い
  • 本格的な設備環境で取り組める
  • 目標を持って継続しやすい
  • 無料体験レッスンあり(まず雰囲気確認OK)

「もっと詳しく知りたい」「一度体験してみたい」と感じた方は、
ぜひ アフラス渋谷校の体験レッスンにお越しください。

実際のレッスンの雰囲気や講師との相性を、体験を通して確認していただけます。
初めての方でも安心してご参加いただけます。

また、遠方にお住まいの方や通学が難しい方には、オンラインレッスンもご用意しています。
ご自宅からでもレッスンを受講可能です。

少しでも気になった方は、お気軽に体験レッスンをご利用ください!