2022年01月08日

画像素材を組み合わせて編集するツール (Grid Layouter) を更新しました

screenshot0001.png screenshot0002.png

タイトルの通りです. Windows, Android で起動することを確認しており, Macintosh, Linux でも起動できるはずです. iOS, Raspberry Pi でも起動できるかもしれません. 以下は Python2, 3 や Kivy Launcher で実行できるソースファイル, Windows 用実行ファイルをまとめた zip のリンクです.

22/01/09 追記: 対応 OS を書いていなかったのと, 透過レイヤーについて追記.

24/07/03 追記: 公開終了しました。

素材から画像を指定したサイズで切り取り, 貼り付けたり敷き詰めたり, もちろん透過することもできるので, ゲーム制作に向いたツールだと思います. 上の画像は, このツールを使用し, DENZI 部屋 の Denzi 氏の画像を組み合わせてゲームの画面のようなものを作っている画像です. 操作説明などは, zip 内の readme.txt, manual.txt を参考にして下さい.

manual.txt に書き忘れたのでここに. 一枚目のレイヤーは非透過画像ですが, 二枚目以降は透過画像となります. 透過画像を作る場合, 二枚目以降のレイヤーのみを使用して下さい.

Twitter に動画 も上げました.

ラベル:Python kivy nuitka download
posted by Takenoko at 14:14| Comment(0) | 自作ソフト | このブログの読者になる | 更新情報をチェックする

2022年01月02日

画像素材を組み合わせて編集するツールを公開しました

ファイルを更新しましたので, こちら でダウンロードできます.

ラベル:Python kivy nuitka
posted by Takenoko at 15:08| Comment(0) | 自作ソフト | このブログの読者になる | 更新情報をチェックする

2021年12月18日

NetHack 及び Slash'EM の STR, DEX による命中とダメージのボーナスについて

タイトルの通りです. 以下はスポイラーですが, ゲームの楽しみを損ねるようなものではないと思います. ソースコードの読み違いのある可能性もあります. もし, そのような箇所があれば, 指摘していただけるとありがたいです.

NetHack 及び Slash'EM の STR, DEX による命中とダメージのボーナスについて

<NetHack 3.4.3 及び 3.6.6>

A. 命中ボーナス

変化している場合の計算は複雑なので省略.
以下は変化していない場合の値.

1. STR ボーナス

STR <  6    : -2
STR <  8    : -1
STR <  17   : 0
STR <= 18/50: 1
STR <  18/**: 2
STR >= 18/**: 3

2. プレイヤーレベルボーナス

level < 3: 1
それ以上 : 0

3. DEX ボーナス

DEX <  4 : -3
DEX <  6 : -2
DEX <  8 : -1
DEX <  13: 0
DEX >= 14: DEX - 14

以上を合算した値が命中ボーナスとなる.

B. ダメージボーナス

変化している: 0
STR <  6    : -1
STR <  16   : 0
STR <  18   : 1
STR == 18   : 2
STR <= 18/75: 3
STR <= 18/90: 4
STR <  18/**: 5
STR >= 18/**: 6

以上がダメージボーナスとなる.

<Slash'EM 0.0.7E7F3>

A. 命中ボーナス

変化している場合の計算は複雑なので省略.
以下は変化していない場合の値.

1. STR ボーナス

STR <  6    : -2
STR <  8    : -1
STR <  17   : 0
STR <  18/**: 1
STR <= 19   : 2
STR <= 21   : 3
STR <= 23   : 4
STR >= 24   : 5

2. DEX ボーナス

DEX <  5 : -2
DEX <  7 : -1
DEX <  15: 0
DEX <= 17: 1
DEX <= 20: 2
DEX <= 23: 3
DEX == 24: 4
DEX == 25: 5

3. プレイヤーレベルボーナス

level < 3: 1
それ以上 : 0

以上を合算した値が命中ボーナスとなる.

B. ダメージボーナス

変化している: 0
STR <  6    : -1
STR <  16   : 0
STR <  18   : 1
STR == 18   : 2
STR <  18/**: 3
STR >= 18/**: 4
STR == 19   : 5
STR == 20   : 6 
STR == 21   : 7
STR == 22   : 8
STR == 23   : 9
STR == 24   : 10
STR == 25   : 11

以上がダメージボーナスとなる.

posted by Takenoko at 11:53| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

2021年11月16日

Slash'EM 闇の店主の魔除けを奪う方法

タイトルの通りです. 以下はスポイラーです. 私の経験に基づいて書いたので, 間違っている可能性もあります. もし, そのような箇所があれば, 指摘していただけるとありがたいです.





Slash'EM サムを生かしたまま, 魔除けを含む全ての装備を奪う方法


ブラックマーケットは多くの商品が置いてありますが, 非常に物価が高く, 店主のサムはかなりの装備と強さを併せ持ちます. しかし, 慣れたネットハッカーであれば, 店から万引きしたり, サムを倒すのは難しくはないでしょう. 彼を倒すことができれば, 強力な防具とシーフベーンが手に入りますが, 命の魔除けは手に入りません. 魔除けも奪いたいと思うのがネットハッカーでしょうが, サムの AC は非常に低いため, 彼の装備を盗むためには準備が必要となります. 具体的には, 以下の条件を満たす必要があります.

A. 変化手段, 変化制御手段を用意する.
B. (できれば祝福されており, 複数本の) 不死身の薬を用意する.
C. 運を最大まで上げておく.
D. 呪われた大地の巻物を用意する.
E. 傷ついて AC 0 になった上, マイナス修正の大きいシャツ, クローク,
手, 兜を用意する. サムが装備することで, できれば AC -20 以上になる程度は欲しい. 祝呪は問わない.
F. 可能であれば, なるべくプラス修正の大きい命中の指輪を装備し, 余った命中の指輪を食べておく.
G. サムと和解する場合は, 多くの金を用意しておく. 5000 は欲しい. 10000 あればまず大丈夫.
H. 自由行動の指輪を装備しておくか, 争いの指輪で店内のランブサンを始末しておく.
I. 祝福された怪物を探す薬を用意するか, 予知魔法が熟練者以上で怪物を探す魔法を使えること.
J. できれば, 探査する杖を用意しておく.
K. 穴掘りや衝撃の杖, 軟化の魔法など, 岩を破壊する手段を確保しておく. つるはしは時間がかかるので不向き.
L. 石など, サムを怒らせる適当な手段を用意しておく.
M. 失敗した時のため, 瞬間移動の杖を用意しておく.
N. 探査する杖が無い場合, 聴診器を用意する.

下は, 店入り口周囲のマップです.

|4| 
| | 
|3| 
|1| 
|2-@
| | 
| | 
----

探査する杖か聴診器でサムの AC を確認し, マイナス装備を用意します.

以下の手順を間違えると危険なので慎重に行ってください. ペットか争いの指輪を使い, 店内の用心棒たちを倒しておいたほうがいいです. 自由行動の指輪が無い場合, ランブサンは必ず処理して下さい. 全ての条件が整ったら, まずは店の前の 1 の位置にシャツ, クローク, 小手, 兜を置きます.

次に, 2 の位置に立ち, 胴体用防具を脱ぎ, 武器を外し, 水晶のゴーレム (crystal golem) に変化し, 石を投げる等, 適当な手段でサムを怒らせます.

サムに隣接されたら, 3 まで移動し, サムが 1 のマスを踏むまで待ちます.

呪われた大地の巻物を読むと, 3 に岩が降ってきます. 次に 4 まで移動し, 怪物を探す薬か魔法を使い, 10 ターン程度待機します. 探査する杖を岩に向けて振ると, 岩越しにサムが用意した防具を装備したか確認できます. AC が -20 以上になっていれば大丈夫なはずです. 命中の指輪があれば, その分低くても大丈夫だと思います. 杖を振らなくても, サムが移動した時点で, 全ての防具を装備したはずです.

あとは, サキュバス (succubus) に変化し, 不死身の薬を飲み, 穴掘りの杖などで岩を破壊します. サムを何度か攻撃すると, 魔除けを含む全てのアイテムを奪うことができます. 運が悪いと, 盗めないままに不死身が解除されてしまうかもしれません. その際は, また不死身の薬を飲んで再挑戦するか, 瞬間移動の杖でサムを飛ばして逃げましょう.

今後もサムの店を利用したい場合や, 殺人鬼になりたくない場合は, p コマンドで $1000 を何度か渡せば, 友好的になり店に戻ります. 戦う場合, 武器も防具も全て奪ったので, それなりの強さがあれば倒せるでしょう.


サムに装備させる防具を弱化させる場合, マイナス修正にも安全弱化限度があることに注意して下さい. 通常の防具は -4 まで, エルフ製などの一部の防具は -6 までは安全に弱化できます.

posted by Takenoko at 12:40| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

2021年11月07日

ダンジョン自動生成アルゴリズム 21/11/07 版

dg001.png dg002.png dg003.png

ダンジョンを自動生成するコードを Python で書きました. また, その過程を Kivy でアニメーションできるようにしました. 以下はアルゴリズムの説明と, Python や Kivy Launcher で実行できるソースファイル, Windows 用実行ファイルのリンクです.

ダンジョン自動生成アルゴリズム

1. まず, 最初の区画を作成します.

0002.png

2. 作成した中からランダムな区画を選択し, その区画に隣接する周囲を探索し, 区画を作成します. 失敗したら別の区画を選択し直します.

0005.png

3. 探索元の区画と, 新たに作成した区画の重なる辺からランダムに選択し, 接続します. この過程で, 孤立した区画が無いことが保証されます.

0007.png

4. 2 と 3 を交互に繰り返します.

0678.png

5. 区画の作成が終了したら, 区画の辺を探索し他の区画と隣接していた場合に, 適当な確率でその区画同士を接続します.

1010.png

以上がこのアルゴリズムの流れです. 簡単なことを繰り返しているだけですが, これを応用すると, もっと複雑なダンジョンも生成できます.

ダウンロード

ソースファイル: https://www.mediafire.com/file/vi1m7qmjsuc87u7/211107_dun_gene.zip/file

Windows 用実行ファイル + ソースファイル: https://www.mediafire.com/file/90v53r9ovs61im7/211107_dun_gene_win.zip/file

起動及び操作方法は, 圧縮ファイル内の readme.txt と manual.txt を参照してください.

posted by Takenoko at 13:03| Comment(0) | programming | このブログの読者になる | 更新情報をチェックする

2021年10月14日

Linux Mint 19.3 のシャットダウンに問題があったので, カーネルをダウングレードしました

Linux Mint 19.3 32bit xfce をインストールしたところ, シャットダウンしても電源が切れないという現象が起こりました. 必ずではないのですが. そこで, カーネルをダウングレードしてみました. 以下が手順です.

アップデートマネージャを開く
表示
Linuxカーネル
警告文をよく読む
続ける
4.15.0-159 をクリック
インストール
はい
パスワード入力 (環境によっては必要ないかも)
インストールが終了したら再起動
Shift キーを押しっぱなしにして, ブートメニューを表示
Advance Options のある行を選択
4.15.0-159 (選択肢の右側に "(" が無い方) を選択
アップデートマネージャ -> 表示 -> Linuxカーネル -> 続ける
新しいカーネルを削除 (私の場合は 5.4.0-87 だった)
はい
パスワード入力
カーネルをアップデートする

以上です. これで直っているといいのですが.

ラベル:Linux
posted by Takenoko at 12:38| Comment(0) | OS | このブログの読者になる | 更新情報をチェックする

2021年10月05日

Slash'EM の, 素手とマーシャルアーツのダメージ計算を調べました

タイトルの通りです. 以下のスポイラーは, 私がソースコードを読んで書いたもので, 間違っている可能性もあります. もし, そのような箇所があれば, 指摘していただけるとありがたいです.

21/10/06 追記: 銀の指輪のボーナスの対象を追記.

21/10/10 追記: スキルによる追加ダメージを追記.

21/12/18 追記: 強さボーナスを参照できるリンクと, 騎乗ボーナスについて追記し, 影(shade) の表記を修正した.

22/09/24 追記: エンチャントの条件を修正した.





JSLASH'EM-0.0.7E7F3-J0.2.1 の
素手及びマーシャルアーツのスポイラー

以下の文章の skill の値は,
  初心者 = 1
  入門者 = 2
  熟練者 = 3
  エキスパート = 4
  マスター = 5
  グランドマスター = 6
として計算する. また, ローブとは
  ローブ
  守りのローブ
  力のローブ
  脆弱のローブ
を指す. ローブの装備が条件になった場合, 鎧の部位が
裸でも条件を満たす.

1. 変化していない格闘家の命中率ボーナス

武器と盾を装備しておらず, ローブを装備していれば,
命中修正に (level / 3) + 2 を加える.

それ以外で, 武器を装備していない場合, 命中修正に
(level / 9) + 1 を加える. その際, "鎧がちょっと
邪魔だ..." と表示される.

2. エンチャント

変化している時, MR_HITAS***** があればその ***** の値が
enchant になり, ない場合に MR_PLUS***** があればその
***** の値が enchant になり, それもない場合は 0 となる.

変化していない格闘家の場合, level / 4 > enchant
であれば (実際には, 素手攻撃時に変化していない場合,
この時点で enchant は 0 以外にはならないはず),
enchant は level / 4 となる.

enchant が攻撃対象の MR_PLUS*** の *** より小さい場合
noeffect が真となり, それ以外は偽となる.

3A.マーシャルアーツが入門者以上

攻撃対象が影(shade)の場合, damage は 1d3-1 となる.

それ以外の対象には, 格闘家が変化しておらず,
グランドマスターであり, レベルが 17 以上であれば
damage は 6d2 となる.

その条件を一つでも満たさない場合,
level > 2 * (skill - 2) + 5 であれば,
damage は (skill - 1)d2 となる.
レベルが条件を満たさない場合, damage は
((level + 2) / 3)d2 となる.

ローブを装備しており, 盾を装備していない場合,
damage は二倍になる. それ以外の場合, damage に
2 を加える.

3B.マーシャルアーツが初心者

攻撃対象が影(shade)の場合, damage は 0 となる.
それ以外は, damage は d2 となる.

4. ダメージ計算

damage > 1 の場合, valid_weapon_attack を真とする。

小手が祝福されており, 攻撃対象がアンデッドか悪魔の
場合, damage に d4 を加える.

小手の修正値を damage に加える.

小手を装備しておらず, 左右どちらかあるいは両方の
指に素材が銀の指輪をつけており, 攻撃対象が銀に弱い
場合, damage に d20 を加える.

気功拳(Chi Strike) を使用中で, 魔力(en)が 1 以上
ある場合, en > (10 + (level / 5)) であれば damage に
10 + (level / 5) を加え, en が条件を満たさなければ
damage に en を加える. そして, en から
10 + (level / 5) を引く.

精霊拳(Elemental Fist) を使用中の場合, noeffect が真
であれば dmgbonus を 0, 偽であれば 2d4 とする. 炎,
冷気, 電撃, 酸の属性の一つがランダムに選ばれ,
その属性で巻物, 魔法書, 杖が壊れた場合, dmgbonus に
その際の威力を加える. noeffect が真であるか, 対象が
その属性に耐性を持つ場合, noeffect を偽とし,
dmgbonus を 0 とする. 水薬, 指輪が壊れた場合,
dmgbonus にその際の威力を加える. そして, dmgbonus > 0
であれば, damage に dmgbonus を加える.

damage > 0 であれば, 攻撃の指輪によるボーナスと
強さによるボーナスを damage に加える.

必殺(Kiii) 使用中であれば, damage を二倍にする.

狂戦士化(Berserk) 使用中であれば, damage に 4 を
加える.

切り刻みの爪(Eviscerate) 使用中であれば, damage に
(level / 2 + 1) + level / 2 を加える.

valid_weapon_attack が真である場合, 素手であれば,
damage に skill / 2 を加え, マーシャルアーツであれば,
damage に skill * 3 / 2 を加える. さらに, 騎乗中であり,
騎乗スキルが熟練者であれば 1, エキスパートであれば
2 を加える.

武器を使用しておらず, damage > 1 で, 変化していない
場合, d100 < skill(素手. マーシャルアーツは含まず)
を満たし, 攻撃対象が大きい怪物でなく皮が厚くない場合,
怪物の hp > damage であれば, 対象は stun し, 周囲
8 マスにランダムに移動する?

damage が 0 以外で noeffect が真の場合, 銀製の指輪
によるボーナスがあった場合は damage を 8 とし,
それ以外の場合は damage は 0 となる.

変化していない格闘家が素手で, ローブを着用して, 盾を
装備しておらず, 対象が隣接しており, 攻撃対象の皮が
厚くなければ, canhitmon を d100 とする.

canhitmon < level / 8 であれば, damage は二倍になり,
攻撃対象を確認できていれば, "極めて大きな打撃を与えた!"
と表示される.

それ以外で, canhitmon < level / 4 であれば, damage は
1.5 倍になり, 攻撃対象を確認できていれば, "極めて大きな
打撃を与えた!" と表示される. 日本語版ではメッセージに
違いはないが, 英語ではメッセージに違いがあるため区別が
つく.

それ以外で, canhitmon < level / 2 であり, 攻撃対象が
大きな怪物でない場合, 怪物の hp > damage であれば,
対象は stun し, 周囲 8 マスにランダムに移動する?

以上で算出された damage の値が, 攻撃対象へのダメージ
となる.

posted by Takenoko at 15:51| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

2021年10月02日

Twitter 始めました

タイトルの通りです.


7 年前に作って放置していたアカウントの再利用なので, 始めたという表現が正しいかどうかわかりません. 使い方がまだよくわかっていませんが, 何かあれば気軽に送信?してください.

posted by Takenoko at 20:25| Comment(0) | ネット | このブログの読者になる | 更新情報をチェックする

2021年09月19日

Slash'EM 変化時の武器攻撃

Slash'EM では, 二回以上武器で攻撃できる怪物に変化して攻撃した際, 右手の武器と左手の武器を交互に使用する. 二刀流していない場合, 左手の攻撃は無視される. 例えば, マリリスの攻撃は, 武器, 武器, 爪, 爪, 爪, 爪, の六回だが, 二刀流していないと, 二回目の武器が無視され, 武器, 爪, 爪, 爪, 爪, の五回攻撃となる. (uhitm.c の hmonas より)


私がコードを読み違えていなければ, こうなっているはずです.

posted by Takenoko at 14:43| Comment(0) | game | このブログの読者になる | 更新情報をチェックする

2021年09月18日

Slash'EM の二刀流

21/09/19 追記: 不十分な記述だったので修正しました. 結論は変わりません.

untwoweap.png

Slash'EM で二刀流するには, 以下の 1 に該当し, さらに 2 か 3 の内, 少なくともいずれかに該当する必要があります. (mondata.h の #define could_twoweap, wield.c の can_twoweapon, monst.c)

  • 1. 現在の種族で, 二刀流が可能である (二度目の攻撃の種類が武器攻撃である). 変化していない場合, ドワーフ, 人間, エルフ, ドロウが該当する.
  • 2. クラスの二刀流スキルの限界が "熟練者 (P_SKILLED)" 以上である.
  • 3. クラスの二刀流スキルの限界が "入門者 (P_BASIC)" 以上であり, 元々の種族がドワーフか人間である.

よって, エルフやドロウの考古学者や野蛮人, (パッチが当たっている場合) ジェダイは, 二刀流できません. 種族が条件で二刀流できない場合, クラスの二刀流スキルの限界が熟練者以上であり, 変化時に二刀流できるモンスター (アレアックス, マリリス等) に変化した状態であれば, 二刀流できてスキルも上げられます.


エルフのジェダイで二刀流できなくてソースを読んだら, まさかの仕様だった.

posted by Takenoko at 14:52| Comment(1) | game | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。