Pygameで加算合成

ほとんどの方にはどうでもいいことですが、、、
どうやら、Pygameで加算合成ができるようになるっぽいです。
 
http://www.pygame.org/docs/ref/surface.html#Surface.blit
 
ほぼSDLPygameだと、光の表現をするのに、それっぽい画像を用意したり半透明で頑張るしかなかったのです。
 
ですが、
Pygame DocumentationのSurface.blitを見ると、

	Surface.blit(source, dest, area=None, special_flags = 0): return Rect

special_flagsという引数が、、!?
 
さらに読んでみると、

An optional special flags is
for passing in BLEND_ADD, BLEND_SUB, BLEND_MULT, BLEND_MIN, BLEND_MAX
With other special blitting flags perhaps added in the future.

なんか将来的に加算・減算・乗算が実装されるみたい。
BLEND_MIN, BLEND_MAXの意味が良く分かりませんが、、(´∀`;
 

special_flags new in pygame 1.8

今のバージョンが1.7だから、次バージョンで実装されるみたいですね。
楽しみー!

「移動」と「攻撃」めも

D.Kさんの「剣STG ProjectN」
http://dij7.fc2web.com/alpha/data/ProjectN_000.zip
をプレイして思いついたこと。
 

「移動」と「攻撃」が分離されている場合

通常、「移動」と「攻撃」は分離されている

  • 「移動」は十字ボタン、ジャンプはBボタン
  • 「攻撃」はAボタン、とか

これにより、
「移動」だけできるし、「攻撃」だけできる。
また、「移動」と「攻撃」を同時に行うことができる。

ex)同時に行う例
 ・逃げながら攻撃する
 ・ジャンプ攻撃

このような「移動」と「攻撃」を同時に行うことを要求すると、難易度が上昇する。
 
通常、「移動」と「攻撃」のどちらが重要化といえば、「移動」。
理由としては、「移動」は距離によるリスクを操作できるから。
 
 

「移動」と「攻撃」がくっついている場合

「移動」と「攻撃」が同一のボタンに割り当てられていると、

  • 2つのことを同時に行うため、理解を妨げる

⇒納得できる理由が必要

  • 「攻撃」のときに、「移動」が発生してしまう

⇒組み合わせを任意に行えない。
 

で、結論

「移動」と「攻撃」が分離されていると、
レベルデザインも、
ここは「移動」(回避)を楽しむところだ!
ここは「攻撃」を楽しむところだ!
ということがやりやすいような気がします。
 
逆に、常に「移動」と「攻撃」がくっついていると、
それを前提にレベルデザインを考えなければならないので、
ステージが作りにくいような気がします。
(解法が分りにくいステージになったりと)
 
 
なので、
「移動」と「攻撃」が分離されていることが理解を容易にする、
ということから考えると、
『「移動」と「攻撃」がくっついている』場合は、、、
 
なんとなくですが、

  1. 「攻撃」だけ
  2. 「移動」だけ
  3. 「攻撃」「移動」同時

という3つの状態を、プレイヤーが任意に「切り替え」できると、
それぞれの役割が明確になるのではないか、
などと、思いまちた。
 
例えば、バイオハザードのように、
「攻撃モード」「移動モード」をボタンによって切り替える、
もしくは、ガンスターヒーローズのFIXショットのように、
「攻撃中」は「移動」できない、
という制限を加える、という感じです。
 
以上、「攻撃」と「移動」を明確にするといいことがあるかも、
というお話でしたー。