I-Athena (Server Emulator)

From RO Wiki
Revision as of 00:36, 29 June 2025 by Halca (talk | contribs)


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 (e.g. Omniathena, AthenaAdvanced, Odin, hAthena) 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.

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. 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も大変参考にさせていただきました
    	モンスターデータの情報及び装備関連及びモンスター反撃に関して特に参考に
    	させていただきましたここに感謝の意を記します
    
  2. 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が死にサーバー再起動
    	という事になるときもしばしばですご注意ください
    
  3. Anon, (2003). [ Athena README.txt ] - 1. I-Athenaについて.
    後は本家Athenaや他の人に託したいと思うところがありますできる限りはなんとかしますが
    	もし開発が遅れているようであれば改良版を遠慮なく作ってください(^-^;
    
  4. Anon, (2003). [ Athena README.txt ] - 1. I-Athenaについて.
    i1どうも初めましてアテナを改良しようと思い手を加えていったらいつのまにかここまできてしまい
    	本人も不安ですが作ってしまったi1です。(変数名みたいな名前だなぁ・・・
    	おもにアクティブスキルステータスボーナス装備クエスト等大部分をやってしまいましたw
    	かなり説明書が長くなりましたがいかんせんもうここまで来るとどこにバグがあるのかどういった計算式
    	なのかデータが足りない等々やらなければいけないことが増えすぎてしまいプログラムに集中することも
    	なかなかできなくなってきました出来ましたら計算式やモンスターデータ及びクエストを作っていただけると
    	こちらとしては本当大助かりですm(_ @_)
    	今回は本当にcardinalさんのWeissにもかなり助けられましたしモンスターデータとアイテムデータは多少流用
    	させて頂いている所もありますがどうかお許しくださいまた本当に大変感謝致しております
    	クエストやモンスターデータのデータ等を互換することで両者のエミュレータで色々と便利になる場合も
    	あると思いますのでぜひ色々お話しましょう^^
    
    	だいたい一月くらいかけて作りましたが何度も何度もこのエミュレータを作ってどうなるのか考えていました
    	私は本家にもお金を払ってたまにやっているんですが本家はもう人が多すぎてしまいまたクエストもない為
    	RPGの要素がほとんどなくなってレアをとれるかとれないかそれしかなくなってしまいましたよね
    	エミュレータをつくり色々な人がクエストを作ってくだされば人数が少ないこのエミュレータの世界にも
    	かなりの光が見えてくると思いますまた独自性も高まると思うんです
    	独自性が高まるならばラグナロクも楽しくなるしもっとやるかーと思い色々やってしまった・・・というわけです(^-^;
    	僕がつくったアリーナクエストはまだ途中です本当は最後まで作りたかったのですがいかんせん僕に残された
    	時間が少なくなってしまって・・・本当は第4ステージで敵がソウルストライクを使ってくるという面にしたかったw
    	第5ステージは私が参上して攻撃したいぃという面にしたいんですがこれは難しいw
    
    	後書きも長くなってきましたので最後に一言
    
    	全てのラグナロクを愛する人に幸あれ