Set Up
This is a how to help content development for official TMW-eA using Ubuntu and the Mana client. Other OS and clients may differ. Following this guide, you should be able to get development testing versions of the client data (tmwdata), server-data (eathena-data) and participate in development by using a localhost server. After getting these, you can both test current development and begin development in the direction you find most fitting.
Dependencies
In addition to the basic build tools (GCC, Make, headers, ...), Bison, and Flex are needed.
Debian derivates (including Ubuntu)
- Open a terminal.
- sudo apt-get install build-essential flex bison
Set Up Own Server
Here are the steps to use when creating a new local testing server.
- Open a terminal.
- mkdir ~/tmw-ea
- cd ~/tmw-ea/
- git clone git://gitorious.org/tmw-eathena/mainline.git eathena
- git clone --recursive git://github.com/themanaworld/tmwa-server-data.git eathena-data
- cd eathena/
- If you are running and older version of make: mkdir -p obj/{common,login,char,map,ladmin,tool}. Debian, Ubuntu, Redhat, SuSE, Knoppix, and Cygwin in particular are famous for still not having Make 3.82, which is a much more compliant implementation. If you are technically inclined, I recommend installing it in /usr/local. -o11c
- make
- sudo cp login-server char-server map-server ladmin /usr/local/bin/
- git config --global url.git@gitorious.org:.pushInsteadOf git://gitorious.org [1] [2]
- cd ../eathena-data
- Preferably, add the update hooks.
- ln -s ../../git/hooks/post-merge .git/hooks/
- ln -s ../../../git/hooks/post-merge client-data/.git/hooks/
- make conf
- cd client-data
- git checkout master
- cd music
- git checkout master
You can now launch your test server.
- Open a terminal.
- cd ~/tmw-ea/eathena-data/
- ./char-server& ./login-server& ./map-server&
- Open another terminal.
- mana --server localhost --port 6901 -u -d ~/tmw-ea/eathena-data/client-data
This should run all three of your servers and the client.
Make yourself a GM so you can test changes made.
See #Administration
See also: GM Commands
You are now free to do some changes, first close the client and your servers.
Notes for client data changes: 1) commit and push them in the client-data repo 2) commit and push "client-data" when it shows "(new commits)" in your server-data 3) commit and push other server data changes.
- Make your modifications (e.g. Change a map) and save them.
- Open a terminal.
- cd ~/tmw-ea/eathena-data/client-data
- git status
- git add [modified files]
- git commit
- git push Note: push
- cd ..
- make maps (if you changed a map)
- git status
- git add [modified files]
- git add client-data (if git status shows (new commits). Don't do this if you don't have push access to client-data!)
- git commit
- git push Note: push
- Close the terminal.
: a step for those with commit access to the remote repositories. For others, you don't need to reconfigure your clone and please make a patch on steps where git push is suggested.
: you only need to do this once, no matter how many times you independently clone the repositories.
- git format-patch -M -C origin/master
- pastebin the patch(es) and post for review at irc.themanaworld.org channel: #tmw-dev or on our development forums. Extensive patches must be posted on the forum as a series of well-formed patches with descriptive commit messages. In particular, later patches should not fix errors introduced in earlier patches, and each patch should form a logically independent part.
You can also pull the data which has been modified.
- Open a terminal.
- cd ~/tmw-ea/eathena-data
- git pull
- If you haven't installed the hook, git submodule update --merge at toplevel (for client-data) and in client-data (for music)
- Close the terminal.
See Also: README.mv.txt - Documentation on using git submodules, like client-data and tmw-music.
Administration
- Start the servers.
- Open a command line terminal.
- cd ~/tmw-ea/eathena-data/login
- ladmin (not ./ladmin)
- add username M password
- gm username 99
Connecting
- Open a command line terminal.
- Run your client pointing to your client data and your local server. E.g. mana -u -d ~/tmw-ea/tmwdata --server localhost --port 6901
If all goes well, you are now ready to test new content and participate with development.
Making Content
Making Map Content
Java Converter Tool
This has been my experience on running the java Converter tools, which takes map data from client-data and applies it to the server-data. The README addresses dependencies for using this tool. It suggests there are other ways it can work in the README, if this method does work for you.
Edit your map and save it. You can push the client data now. Now, you need to run the converter.
- cd ~/tmw-ea/eathena-data/
- make maps
After that, commit and push the files that the converter edited.
Getting Art Content Into The Game
- Post [CPT] or [WIP] art on the graphics development forum.
- Work with the Art Director and collaborators on getting the art consistent.
- When finished, edit topic as [FND].
- Art Director approves [FND] art and marks it [RC]. Should the art need animation or special effect, the Art Director requests xml for it. If not, the Art Director commits it and marks as [GIT].
- XML Team reviews or drafts xml related to the art, then commits the .png and .xml. Topic can be marked as [GIT].
- Art content affected: client-data/graphics/sprites then related directory for .png and .xml animation addition.
- Project developer requests database entry reservations from a General Content Team developer.
- Map entry server data affected: resnametable.txt and .wlk files in the data directory, map content files in the npc directory.
- Map entry client data affected: .tmx files in the maps directory.
- Map entry requires the running of the .tmx converter (aka java converter) before commits can be made.
- Art content server data affected: entry made in the item_db.txt, mob_db.txt or mob_skills_db.txt in the db directory.
- Art content client data affected: entry added in items.xml, monsters.xml or other identification file.
Handling General Content Team [REQ]s
- General Content Team member adds a [REQ] topic to the graphics development forum.
- General Content Team member adds the [REQ] topic as a hyperlink under "Required Art" on the Art in Development page.
- Art Director attempts to network with other artists to assign the art to an artist.
Bit Masking
Bit Masking helps us reduce our variable count while offering a dynamic method of script writing that is versatile and flexible to both linear and non-linear script writing.