Skip to content
Bruce C. Miller edited this page Jul 9, 2020 · 1 revision

Frequently Asked Questions

Introduction

This document is an in-progress collection of information about l1j-en. The answers to these questions were correct at the time of writing, but may be a little off by the time you read it.

What is l1j-en?

l1j-en is a server emulator for the MMORPG [http://www.lineage.com/ Lineage 1].

As far as MMORPG server emulators go, most projects are fairly buggy, only support a small percent of the features of their official counterparts, or don't work at all. l1j-en is one of the few emulators where this isn't the case, and is on par with efforts such as RunUO and L2J. Many hundreds of players actively play on servers using l1j-en.

How does l1j-en compare to other L1J variants?

l1j-en is the only active English language Lineage emulator, and one of only two open source ones. We also aggregate all of the features and bugfixes from Asian L1J efforts as well as add many of our own. While it may take some time for all of the features to filter down to this project, the result is arguably the most stable Lineage 1 emulator available and servers have been able to run wipe-free since its inception (something not possible until l1j-en).

Also important is that l1j-en (at least the classic version) is locked into supporting the final US live server version of the game. The current Asian version of Lineage is a very different game now, with built-in microtransactions and almost all of the core gameplay elements changed to some degree. l1j-en has since diverged from those efforts and will not include any current live server features in the countries that still have them.

Why are we on l1j.org and what happened to GitHub?

A few years ago, NCSoft (or their lawyers) did a full GitHub-wide scan for anything related to Lineage and their other MMO products. Anything related to their software was issued a DMCA takedown notice. Without going into the politics of the DMCA, we are confident that our existence was outside the bounds of that covered by the Act.

In brief, NCSoft's claim was that these projects were in violation of their EULA that players are bound by. Interestingly, they claimed in our case that it only applied to the packet codes in l1j-en. If we had the inclination to fight the claim, it could have been easily pointed out that the packet info is unencrypted network traffic; something anyone with a packet sniffer could have grabbed without having ever been an NCSoft customer (and therefore being under the EULA). Regarding the l1j-en team, none of us are existing customers of NCSoft, nor have we been since starting to work on this emulator. Even if that weren't the case, claiming copyright on a hundred or so numbers would've certainly never stood up. Furthermore, only a subset of the developers on the project are even under US jurisdiction.

At the time, however, most of us were busy with other priorities and no one felt inclined enough to hire a lawyer to draft a protest to it. The DMCA is heavily biased towards the claimant, and the onus is on the accused to make a counter-claim.

So, that's the short version of why we're not on GitHub anymore, and if you go to the old GitHub page, you'll still see the DMCA notice. We discussed just reposting it on GitHub now anyway, since NC seems to not care anymore about Lineage emulation, but we've negated that issue completely by hosting the repo here on this server, outside of the reach of DMCA and US copyright law. This project really deserves its own domain anyway.

I don't care about any of this and just wanna play Lineage!

See the Server List wiki page.

[insert unofficial server name here] has bugs/exploits or is run by jerks.

This project is open source, which means any random person on the internet can now run a Lineage 1 private server. While enabling you, the general public, this ability is a direct project goal, the team here can't take responsibility for the 3rd party modifications to the codebase or how the code is used by external parties.

Note that some servers are indeed run by people who have less than noble ideals about pay-to-win transactions and very few ever commit their changes back to this project or even make them open source. The latter is against both the spirit and letter of the GPLv3, the license we use for this codebase. We would caution players to consider this when choosing a server to play on. RMT-based servers historically tend to be short-lived as well, as it seems that the model is unsustainable.

l1j-en and our official server will not ask for you for any money, to click on ads, spam the internet, or any other questionable activity. If someone is doing so, you've ventured outside the bounds of this project. Team members will also not ask for personal information or passwords. Finally, please do not use the same login/password on 3rd party servers as you do on the official servers.

What happened to the LinDC emulation project?

This codebase is a fork of the LinDC codebase from its revision 894. The reason this new project was created was mainly: 1.) to implement a long planned name change that wasn't specific to one private server, 2.) to address some of the dev team's internal disagreements on project goals, and 3.) to lose some of the baggage associated with the LinDC codebase going down what we feel was the wrong path.

l1j-en was chosen as a name because this project is in fact an L1J port. The "en" part of it denotes the English language aspect of this server. We considered l1j-us, since we do use the US client, but since we have no intention of implementing the US servers' LoA ruleset, this would have been a slight misnomer.

What are the goals of l1j-en?

In short, the primary goal of l1j-en is to create the most stable English language Lineage Server Emulator currently possible. The specific goals of the project are as follows, in descending order of priority:

  • Stability: The server should foremost be as stable as possible. By stability, we mean both that the server should be able to run as long as possible unattended and also that the gameplay should be as free of fundamental flaws as possible. The latest feature doesn't do a public server any good if it introduces dozens of bugs in the process or has the potential to unbalance a server with an active playerbase.
  • Fixing bugs: Non-functional or improperly functioning aspects of existing features takes precedence over adding new features. Bug fixing itself is prioritized by the effect it has on gameplay.
  • Translation: Since this server is the only actively developed English language port of L1J, we'll do our best to translate all text content to English. This task is already completed for all existing aspects of the server.
  • New Features: We do want all of the latest new features worked on by the other various L1J projects (provided they existed on US live servers). However, we take a more conservative approach with new features than other L1J ports, as they tend to be bug-prone when first added. We also implement missing features ourselves as developer time permits.
  • Balance adjustments: The Asian L1J efforts largely target private servers that run at very high rates (i.e. the kind of server where everyone is level 80+ in a few days). While this is fine for some quick fun, we also want to support the ability to run a long-term, if not permanent, public server. This requires a lot of attention to droprates, spawn, and minor features players don't care about on a temporary, high rate server.
  • Server enhancements: Increasing the ease by which server owners can administrate their servers is a final goal. This includes custom settings, support for multiple OSes, GM/Monitor commands, stored procedures, and various other administrative functions. We also maintain an upgrade path for in-use databases.

What are NOT the goals of L1J-En?

There are several things that we could do, but won't for what we feel are valid reasons. A few of the major things we will not do are:

  • Refactoring the codebase: We are well aware of the fact that L1J is rife with lame technologies and very uninspired design. L1J is a great example of how NOT to design a large piece of software. While we share in the many complaints anyone with experience in software development will have within a few minutes of examining its architecture (or lack thereof), we will do as little refactoring as possible simply because we want to leverage the work being done by other L1J efforts. Diverging too far from their structure complicates the merge process, and while it would still be possible to make use of their additions, the English-speaking Lineage community lacks the talented manpower to re-implement every one of these individually. (since most asian sources are moving on to 3.3c and beyond while the American live servers stopped at 3.2, this may change in the future. A point will be hit soon that changes from the asian sources won't be applicable to us anyway)
  • Support: While members of the development team do actively assist in the efforts of some of the public servers using the codebase, what we won't do is provide personal support for every person that downloads the code. The reason for this is simply that dev team members don't have time to provide individual walkthroughs of the setup process and all of the aspects of server administration. A setup guide is provided on this site, and support can be had from other admins and users on the Lineage Resurrection forum, however. We'll also do our best to make the various steps of the processes as self-explanatory as possible, but don't guarantee that it will be accessible to those who lack basic computer skills.
  • Custom features: Many private servers provide a Lineage experience that has modified rules from the live servers. While we're happy to add any custom feature if it can be toggled with a configurable setting, what we won't do is modify the basic game mechanics of Lineage itself to satisfy one server's vision of what Lineage should be. Admins who want to do this are welcome to make their own private modifications, of course.

I want to run the server, but am getting some error. What should I do?

First, ensure that you've read all documentation available here on the site. 95% of the time, the reason this occurs is because of some missed, ignored, or misinterpreted step that is already explained here. There is additional documentation available within the repository itself. The Lineage Resurrection site also has some information available.

If still confused, scroll through some of the previous posts already made on the Lineage Resurrection forum or the official Google Group. Chances are someone else has already made the same error you have and the answer is posted in a reply there. If you are unable to find an answer this way, either post a question there or check the About Us page for the current methods of contacting the team.

Lastly, if you're still having problems, and are either unable to explain it properly or get an answer from other users, you can always take a look at the code itself. Experience with most any higher-level programming language should be adequate to get an understanding of what should be occurring during server initialization. If the error is occurring at an earlier step, such as compilation or getting the server to start, documentation on the tool(s) you are using will probably provide the answer to what you're doing wrong.

If you've tried all of the available methods and still can't get the server running, then why not save yourself and those that will try to help you the time and take advantage of the fact that several publicly available servers (some of which are listed above) who have already done all the work for you?

How do I report bugs?

There's a Issues tab on the site that is open to the general public to add bug reports. Create a new issue and fill out the form fields. Please add as much detail as possible, so that whoever looks at it can recreate the bug in a test environment. Recreating the bug is almost always a necessary part of finding the bad code and fixing it.

Bugs are prioritized by severity, but are not necessarily fixed in that order. If someone only has a few minutes of free time, they may just fix a smaller issue. Also, some issues are inherent to the current design, have client-related causes, or are otherwise impossible to resolve at the current time. These may linger indefinitely.

If there is a bug that really bothers you personally and it isn't being addressed quickly enough or to your satisfaction, remember that this is an open source project. We can and do accept fixes from non-members, and interested parties are welcome to join up and help. Remember, we're just fans of Lineage like yourself, who want to see Lineage emulation get better.

How do I help this project?

Are you technically capable? We want your help! As an open source project, you can assist the further progress of Lineage 1 emulation by contributing to this project. Feel free to download the code and get familiar with it. Then, if you identify something needing attention or can address something on the issues list, let us know. Continue reading for full details.

How do I submit a patch?

If you're already on the development team, just check in via git. Otherwise, email your patches to one of the project owners, and if it meets at least minimal quality standards, we'll gladly add it to the project. Please test all changes locally before submitting.

What skills are needed to help?

Anyone with moderate Java development experience (or any high-level OOP language), database experience, knowledge of the software development process, or an ability to learn these skills will have no problems contributing here. This codebase is easy to understand and modify, but also very fragile, so attention to detail is necessary. There are no positions or openings to apply for; if you want to help, just start coding! :) If you're helping, you'll be added to the project members.

You do not need to play on our production server to help this project, and we won't stop you from running your own server with your own vision of what Lineage should be. In fact, many servers have done just that. Most english lineage 1 private servers are using this code base (even if heavily modified with their own additions). Contributing your changes/fixes back to this project will not just make updating easier, but help Lineage emulation for everyone.

What quality standards are in effect?

We do reserve the right to not include patches that are of extremely poor quality or don't follow basic best design practices. We are aware of the fact that the codebase could use a ground-up refactoring, but will not do so in order to maintain L1J portability. Along those lines, in rare cases, patches may not be acceptable due to the fact that it would make L1J merges significantly more difficult. The only other reason a patch might not be accepted is that it involves the hardcoding of gameplay mechanics that are contrary to the goals of the L1J-En server project. In that case, we will be happy to add it as an optional component or you can feel free to add it as a configurable setting. We don't want to discourage anyone, so in such an event we'll be happy to work with committers to get their submissions up to par (developer time permitting).

Database changes must be submitted in the form of SQL queries for just that change/fix (do not send us dump files).

I want to help, but am too unskilled and/or stupid.

One option here would be to help out with testing, documentation, managing various aspects of this site, assisting users on the forum or IRC channel, helping the community on a public server, or anything else you can think of. This kind of community help has been essential to this project (especially the testing).

The other option is to learn one of the technical skills necessary to help out. If you're starting from nothing, pick an aspect of the server that interests you to focus on. For example, the database could really use the attention of someone skilled in SQL that closely monitors the datapack. Alternatively, you could just learn Java and help out on that end. Or, master some of the tools and help monitor the build process. These are just examples. Any of these skills are valuable in other aspects of real life too. There are thousands of books and free tutorials on all of these topics, and none of the technologies in use here are exceptionally complicated, so the only thing required is time.

What are Milestone builds?

Milestone builds are released to help those of you who may lack some of the technical skills needed to setup your own server via compiling and applying updates. If you find compilers and databases intimidating, these are for you.

  • Milestone 1: This was an Ep5 release. It is still available on the old project site for those wanting to run an Ep5 server.
  • Milestone 2: This was a post-EpU merge release. It also is only available on the old site.
  • Milestone 3: This was an internal re-baselining milestone for correcting some of the bad development work that occurred during and in the 6 weeks after the EpU merge. No precompiled server binary exists for this release.
  • Milestone 4: This milestone has been published after the first L1J-En update completed testing and went live on the LineageDC public server.
  • Milestone 5: Just released! This is a maintenance update with a ton of minor bugfixes.
  • Milestone 6: Another maintenance update.
  • Milestone 7: First stable release supporting the crack of time or tikal antharas client. It isn't feature complete yet, but 'usable'.
  • Milestone 8: The main 3.0 update.
  • Milestone 9: The stabilization update for all new 3.0 content.
  • Milestone 10: The current, in-progress milestone, fixing (most) S3Ep1 content.

What's the current status?

After a few years of mostly just Smitty working on the codebase, we're trying to get major development back on track.

See the About Us page for some info on current ancillary efforts.

Using L1J-En

Castle sieges don't work!

They work, you just need to set them up properly. If this is on your own server, to do so, shutdown the server then manually set the castle ownership to a test/gm prince by changing that bp's hasCastle value in clan_data. Log in as that char to verify that he does in fact own the castle (you should see a crown over his head and be able to use BP return scrolls). Then, shut the server down again and set the castle's war_time to the near future in local time. Other princes should now be able to declare as long as they follow the normal game rules for being able to do so. Do this for all of your castles until player bps own all of them.