作りたいゲームにもよりますが、1つの大きな夢のゲームを追い続けるのではなく、小規模なプロジェクトを何度も完成させるというのも1つの方法です。
例えばゲームジャム参加や「1週間で完成」を目標します。完成させることで「実行力」への自信がつき、挫折感を減らすことができます。
"Game A Week" に挑戦するのも良いかもしれません。
2dgames.jp
もちろん有料で販売するには、クオリティを上げるための作り込みが必要です。ただ「面白くなるかどうかわからない」といった不安を抱えながら作るよりは、Game A Weekによってある程度面白さを確定してから、作り込みを行うほうが安定した開発を行いやすいと思います。
# 一時停止状態を切り替える
func _set_process_all_objects(b:bool) -> void:
for obj in _main_layer.get_children():
obj.set_process(b)
obj.set_physics_process(b)
for item in _item_layer.get_children():
item.set_process(b)
item.set_physics_process(b)
for wall in _block_layer.get_children():
wall.set_process(b)
wall.set_physics_process(b)
for bullet in _bullet_layer.get_children():
bullet.set_process(b)
bullet.set_physics_process(b)
if _now_bgm != _next_bgm: # BGMのIDに変更があった
var _can_change = true
if _bgm.playing:
var pos = _bgm.get_playback_position()
var measure = 13.01 / 8 # 13.01秒 / 8小節.
var d = fmod(pos, measure)
if 0.1 < d and d < measure - 0.1:
_can_change = false
if _can_change:
# BGM変更.
_now_bgm = _next_bgm
_bgm.stream = load("res://assets/sound/stage%d.mp3"%_now_bgm)
_bgm.play()
# サウンドデータのパステーブル.
var _snd_tbl = {
"damage": "res://assets/sound/damage.wav",
"explosion" : "res://assets/sound/explosion.wav",
"coin": "res://assets/sound/coin.wav",
"flash": "res://assets/sound/flash.wav",
}
func setup(root, layers, player:Player, camera:Camera2D) -> void:
# ゲーム開始時に一度だけ呼び出される関数
...
# MAX_SOUND の数だけ AudioStreamPlayer を作って登録しておく
for i in range(MAX_SOUND):
var snd = AudioStreamPlayer.new()
snd.volume_db = -4
root.add_child(snd)
_snds.append(snd)
そして再生するときにあらかじめ確保していた AudioStreamPlayer を使います。
func play_se(name:String, id:int=0) -> void:
if id < 0 or MAX_SOUND <= id:
push_error("不正なサウンドID %d"%id)
return
if not name in _snd_tbl:
push_error("存在しないサウンド %s"%name)
return
var snd = _snds[id] # idに対応する AudioStreamPlayerを取り出す
snd.stream = load(_snd_tbl[name]) # SEをロードする
snd.play() # 再生
カメラのスムージングとカメラ揺れの共存
カメラのスクロールは smoothing をオンにしておくと滑らかにスクロールしておすすめです。
問題点として、カメラを揺らすときにカメラの position の移動がゆっくりになって激しい揺れができなくなります。そこで、カメラを揺らす場合には smoothing_enabled を無効にして揺らすようにしています。
PCは M1 Mac mini (2020) と Macbook (2016) を使っています。ただ macOSは、ゲーム開発に関連するツールが「Windowsでしか使えない」「対応していない」「Windowsと比べて使い勝手が悪い」など Windows 環境に比べて不利な点が多いので、あまり人にはおすすめできない環境です。例えば Unity を使うにしても Visual Studio が使えないとか、UE のパフォーマンスも macOS版はあまり良くないとか…。GameMakerもmacOSでしか発生しない不具合もいくつかありました。