I-Athena (Server Emulator)
I-Athena was the name of an Athena-based Ragnarok Online server emulator which intended to improve the codebase of Athena itself and offer better features such as improved memory management and the ability to run on less powerful hardware, as well as FreeBSD, Linux and Windows. The project was named I-Athena because all of the authors, according to its README.txt, had nicknames beginning with the letter I.[1]
The project is considered to be a founding, and large contribution which was eventually merged into the Athena codebase, which introduced NPC scripts, atcommands, build automation, windows support via cygwin, as well as a substantial number of feature introductions such
History
Not much is currently known about I-Athena beyond its references in the EmuServer Of Ragnarok (EOR) bulletin boards, and in the YARE source code. Their developers state their goals along with performance improvements were to also implement NPC scripts, which were not present in the original version of Athena. I-Athena was the project which introduced the Athena scripting language for NPCs.[2], which appears to have been later introduced into the main Athena sourcecode.
It is very likely that the developer of I-Athena was the developer who introduced most of the concepts now seen in Athena today, such as at commands (e.g. @kami) and also introduced a large part of the initial Athena source code in I-Athena. For example, its developer i2, lists a large list of features added and also remarks that they started bugfixing Athena and ended up writing an emulator. This project provides an example of a developer which created a project to improve the parent project, and then deliberately discontinued their own project so that development would continue in the Athena (jAthena) project[3].
This may go a large way to explanining why Athena among all the emulators was the most developed, as the author stated they had spent over a month on the emulator and had been planning to write one themselves but they instead contributed to the Athena project, despite having an I-Athena project of their own. [4] This goes in contrast to the other spin-offs of Athena which occurred a year or longer later, which ultimately had different goals but ended up eventually in some way being re-introduced into the Athena or eAthena codebase later on after being discontinued for varying reasons, but usually due to lack of updates or popularity in relation to the more-established emulators (e.g. Omniathena, AthenaAdvanced, Odin, hAthena and so on).
Developer motivations
As with other Ragnarok Online emulators, i2, I-Athena's author, wrote in their README an explanation of why they wanted to write the software, with their main motivation being that they wanted to explore the ways in which the creativity of players could be explored in Ragnarok particularly in writing quests, but also alongside many of the other authors of emulators, cites lack of community involvement and limited content in the official Ragnarok servers being the reasons why they were tempted into finding their own way of adding to Ragnarok content. When they discovered that an emulator already existed, their motivations were to improve it in order to be able to be able to make quests within the game, which the author states were not available or were lacking[1].
References
- ↑ 1.0 1.1 Anon, (2003). [ Athena README.txt ] - 1. I-Athenaについて. -
1. I-Athenaについて I-Athenaはアテナのプログラムをベースとし様々な改良をくわえたC言語を基本として 作られたエミュレータです。 改善点は後述しますが、かなりの改良を加えた為、名前をI-Athenaとさせていただきます。 開発者のイニシャルが全員IなのでチームI'sということで(寒 Athenaと同じく、複数人の開発メンバーにより製作されています。 基本的なライセンスはオリジナルがGPLの元に配布されている為これに従いGPLの元配布を許可します。 動作の確認は以下の通りのみ行っています。 // ただし完璧に動く事を保証するものでありません 対象CPU: Intel Pentium over. WindowsXP Professional 上の cygwin Linux RedHat 8.0 動くと思われる環境(検証したわけではないので、保証は出来かねます) FreeBSD 4.6 Linux RedHat 7.3 今回の改良に関してはcardinalさんのWeissも大変参考にさせていただきました。 モンスターデータの情報及び装備関連及びモンスター反撃に関して特に参考に させていただきました、ここに感謝の意を記します。
- ↑ Anon, (2003). [ Athena README.txt ] - 1. I-Athenaについて. -
8.npcクエスト作成に関しての詳細 a,基本事項 NPCを利用してクエストを作る機@能があります。I-Athenaに搭載された各コマンドを利用して かなり凝ったクエストを作ることも可能です。まずは基本事項として書き方の説明を致します。 例1:ワープカプラさん prontera.gat,166,195,4 script ワープカプラさん 115,{ cutin "kafra_03",2; mes "[ワープカプラさん]"; mes "どこか逝きたい所はございますか?"; next; menu "モロクへいきたい",Lmoroc,"オークダンジョンへいきたい",Lorc,"沈没船ダンジョンへいきたい",Ltre, "げふぇんへいきたい",Lgra,"アリーナへいく",Larena; Lmoroc: warp "morocc.gat",160,280; close; Lorc: warp "gef_fild10.gat",223,190; close; Ltre:warp "alb2trea.gat",85,100; close; Lgra:warp "geffen.gat",213,110; close; Larena:warp "arena_room.gat",100,45; close; } まず全ての空白はタブでやってください。もしクエストを作る際に上手くいかないときは空白問題が かなり多いかもしれません。 一番最初の行"prontera.gat,166,195,4 script ワープカプラさん 115" の意味ですが、これはプロンテラの町(prontera.gat)の166,195の位置に 4の向き(確か正面)で以下のscriptを動かす。 NPCの名前はワープカプラさんで見た目は番号115のNPCになるということです。 この行を書き以下にクエストの内容を書きます。それぞれのコマンドは後々説明を致します。 b,ファ@イルの取り扱い 通常基本クエストはフォルダ内部にある"npc_sampleJ.txt"にかかれています。これは本I-Athenaの 製作陣が使用していきたいクエストである為、なるべく変更はしないでください。 新規に自分だけのクエストを作る際には、新たに"npc_myquest.txt"(名前はなんでもいいです)を 作ります。そのテキストファ@イル内部にクエストを書いてください。 次にそのクエストをプログラムに読み込ませる為、"map_athena1.cnf"の12行目位にある npc: npc_shopJ.txt //For Japanese npc: npc_monsterJ.txt //For Japanese という記述のようにファ@イルを追加してください。作ったクエストが"npc_myquest.txt"でしたら、 npc: npc_shopJ.txt //For Japanese npc: npc_monsterJ.txt //For Japanese npc: npc_myquest.txt //For Japanese という形になります。 この作業を行うことで自分の作ったクエストだけではなく、他人が作ったクエストも気軽にプレイする 事が可能となります。 c,クエストコマンド (1)mes 使用例:mes "メッセージ内容"; 内容:NPCウィンドウにメッセージを表示します。 (2)next 使用例:next; 内容:NPCウィンドウにnextを表示させ次に進めます。 (3)close 使用例:close; 内容:NPCウィンドウにcloseを表示させウィンドウを閉じます (4)menu 使用例:menu "メッセージ内容",Label; 内容:選択が可能となるNPCウィンドウになりメッセージ内容を選択することで @ @ @メッセージ内容の横に書いてあるLabelへとスクリプトが移ります。 (5)goto 使用例:goto Label; 内容:指定したLabelへとスクリプトが移ります。 (6)jobchange 使用例:jobchange Job_Novice; 内容:ジョブを変化させます。他職業の指定に関しては以下の名前を使用してください。 (Job_Swordman,Job_Mage,Job_Archer,Job_Acolyte,Job_Merchant,Job_Thief,Job_Knight, Job_Priest,Job_Wizard,Job_Blacksmith,Job_Hunter,Job_Assasin) (7)input 使用例:input; 内容:数値を入力する事ができるNPCウィンドウが開きます。これを利用し、後述する 変数と組み合わせて使用する事で数値に対して何かしらの動作を行わせる事が可能です。 (8)warp 使用例:warp "prontera.gat",100,60; 内容:キャラクターを指定した場所にワープさせます。必ず.gat指定にしてください。 (9)setlook 使用例:setlook 2201,1; 内容:装備を見た目のみ変更させます。setlook アイテム番号,1;という形でしようしてください。 なお見た目のみとなる為アイテムとして取得することはできません。 (10)set 使用例:set Zeny,Zeny+1000000; 内容:変数に値を追加する際に使用します。Zeny,Zeny+1000000とすることで現在のZenyの値が 1000000加算される事になります。現在使用できる変数は以下の通りです。 (SkillPoint,StatusPoint,Zeny,BaseLevel,JobLevel) 後述する変数を使用する事も可能です。 (11)if 使用例:if(countitem(515)<10); 内容:Cでいうif分岐です、真ならば実行します。偽であるならその行は無視されます。 またcountitem(アイテム番号)とする事でキャラクターが所持しているアイテムの個数を 知る事ができます。 (12)getitem 使用例:getitem 2214,1; 内容:キャラクターにアイテムを取得させる事ができます。getitem アイテム番号、個数となります。 (13)delitem 使用例:delitem 2214,1; 内容:キャラクターのアイテムを減らします。delitem アイテム番号、個数となります。 (14)cutin 使用例:cutin "kafra_03",2; 内容:カプラ嬢を画面右下に出現させます。今現在仕えるカット絵は"kafra_01~kafra_07"のようです。 cutin "kafra_03",255;と255という数値を指定することでカプラ嬢は消えます。 また、dataフォルダ内に置いてある絵を表示することも可能なようです。 (15)viewpoint 使用例:viewpoint 1,100,100,1,0x0000ff; 内容:キャラクターマップに点滅する点を表示することが可能となります。 viewpoint type,x,y,point_id,colorという説明がありましたがよくわかっておりません。 (16)monster 使用方法@:monster "バフォ様",1039,5; 内容:モンスターを現マップ内に出現させる事ができます。monster 名前,モンスター番号,数という形です。 このmonsterコマンドはnpc_sampleJ.txtの最下部にあるmonsterとは関係はありません。 番外:変数に関して クエストによっては変数をフラグとして使用したい場合が出てくると思われます。 現段階においては変数をフラグとして利用するコマンドはありませんが、変数を 追加で使用することが可能です。デバッグ用変数としてS_FLAGという変数を用意しました。 これはローカル宣言されている変数である為マップ移動を行った際に初期化されます。 いずれ変数宣言を行えるようなコマンドを製作したいとは思いますが、今しばらくお待ちください。 d,注意点 クエストを作成した後追加するだけで利用は可能なのですが、もし記述が間違っていた場合は コンパイラでエラーはもちろんでません(^^; たいていの場合";"が抜けていたりラベルが間違っていたりします。 こういった場合たいていカプラさんがお話してくれません。時たまmap2.exeが死に、サーバー再起動 という事になるときもしばしばですご注意ください。
- ↑ Anon, (2003). [ Athena README.txt ] - 1. I-Athenaについて.
後は本家Athenaや他の人に託したいと思うところがあります。できる限りはなんとかしますが もし開発が遅れているようであれば改良版を遠慮なく作ってください(^-^;
- ↑ Anon, (2003). [ Athena README.txt ] - 1. I-Athenaについて.
i1:どうも初めましてアテナを改良しようと思い手を加えていったらいつのまにか、ここまできてしまい 本人も不安ですが作ってしまったi1です。(変数名みたいな名前だなぁ・・・ おもにアクティブ、スキル、ステータスボーナス、装備、クエスト等大部分をやってしまいましたw かなり説明書が長くなりましたが、いかんせんもうここまで来ると、どこにバグがあるのか、どういった計算式 なのか、データが足りない等々やらなければいけないことが増えすぎてしまいプログラムに集中することも なかなかできなくなってきました。出来ましたら計算式やモンスターデータ及びクエストを作っていただけると こちらとしては本当大助かりですm(_ @_)m 今回は本当にcardinalさんのWeissにもかなり助けられましたし、モンスターデータとアイテムデータは多少流用 させて頂いている所もありますがどうかお許しください。また、本当に大変感謝致しております。 クエストやモンスターデータのデータ等を互換することで両者のエミュレータで色々と便利になる場合も あると思いますのでぜひ色々お話しましょう^^ だいたい一月くらいかけて作りましたが、何度も何度もこのエミュレータを作ってどうなるのか考えていました。 私は本家にもお金を払ってたまにやっているんですが、本家はもう人が多すぎてしまい、またクエストもない為 RPGの要素がほとんどなくなってレアをとれるかとれないかそれしかなくなってしまいましたよね。 エミュレータをつくり色々な人がクエストを作ってくだされば、人数が少ないこのエミュレータの世界にも かなりの光が見えてくると思います。また独自性も高まると思うんです。 独自性が高まるならばラグナロクも楽しくなるしもっとやるかーと思い色々やってしまった・・・というわけです(^-^; 僕がつくったアリーナクエストはまだ途中です。本当は最後まで作りたかったのですがいかんせん僕に残された 時間が少なくなってしまって・・・本当は第4ステージで敵がソウルストライクを使ってくるという面にしたかったw 第5ステージは私が参上して攻撃したいぃという面にしたいんですがこれは難しいw 後書きも長くなってきましたので、最後に一言。 「全てのラグナロクを愛する人に幸あれ」