Jump to content
  • 0

L2Homage; Making L2 Modding Accessible


Bumble

Question

Hi,

 

I'm making this post to test the waters. If what I'm about to show you doesn't interest you, I'll take it as a sign to stop spending time on it. I've been hoping that the old adage "If you build it, they will come" holds true, but I think it's time to straight up ask for feedback. I've contacted a few people for possible collaboration, but none have shown much interest (which is completely fair).

 

I've been working on L2Homage in my spare time. It's not a quick project, and it will take a long time to complete. It will be done modularly, so it will be usable in stages. The first one is already functional, but I'm still doing tests.

 

What is L2Homage?

L2Homage is a modding tool meant to make modding L2 OFF files easier. It doesn't do anything you can't do on your own, by editing a handful files.

L2H is an extensive editing tool for both client and server files for Lineage 2 Epilogue. While still in development, the intention of this project is to provide users with a tool that’s capable of repurposing most of existing ingame content. This will allow users to rethink and reshape the world of Lineage 2, providing the hordes of burnt out players with new, exciting content, without having to spend hours learning how to manipulate the data structure. The hope is to see a bunch of unique, new game worlds appear, instead of relaunches of the same L2 experience we’ve all been through too many times to count.

 

How much will it cost?

L2H will be free, and eventually completely open source. This is not a project created for monetary gain, it’s solely meant to revitalize the stagnating server scene.

 

Which L2 version does it use and why?

L2H is meant to be free, so the server files should be as well. The most complete, freely available L2OFF files are the Gracia Final/epilogues files, and with Eressea’s extender, it feels nearly bug free. It’s a very strong, free base to build this project on. This tool would likely follow Eressea's extender. If she decides to upgrade L2 version, L2H would most likely follow.

 

When will it be done?

This is a side project with a single developer attached. It won’t be completed fast, but each milestone will be made available to the public, once tested and functional. The development will be modular, with each version providing new options. If you're interested in helping out, let me know.

 

Why are you making this post now?

L2H is meant to help users customize the world of Lineage 2. Every user has a different vision, and as such it’s valuable to gather not only critique, but feature requests and suggestions from anyone interested in the project. The development direction is not set in stone, and is open to change. It's also a test to see if such a tool is even desired. If people tell me this is a waste of time, I'll throw in the towel. There's no reason to continue working on something unwanted.

 

Which language is L2H developed in?

C#

 

How do I use L2H?

Install the L2OFF gracia epilogue server files and Eressea’s extender, then open L2H. There are 3 folders in the L2H directory; client, server and data. Copy the required server script files into the server folder and the decrypted client .txt files into the client folder. There is a .txt file in each folder, informing you of what goes where. Don’t touch the data folder, as it only keeps track of the work you’ve done so far. When you’ve placed the data files in the correct folders, open the application and go to the load/save tab. Click “Load All” and wait. When done, the other tabs have been populated with data, which you can edit freely. When you’re done editing, click “Save All”. If you don’t click save, your data isn’t exported. Now copy the modified files back where they came from. Client files need to be encrypted with an encryption tool again.

 

What does it look like?

Here are a few screenshots of the application in action. It’s still very barebone, but that will change in the future. Loading functionality:

image.png.9e37d5f9f0732ac8bc2b89cbfc2828dd.png

 

Weapons editing:

image.thumb.png.a025f82977580ce24ee8191200177e1e.png

 

Armors editing:

image.thumb.png.1d1696d8cd76299ba08461de62588782.png

 

Etc editing:

image.thumb.png.a7eeb22c4552cd53f320169fdb2019c4.png

 

Sets editing:

image.thumb.png.b940972f62ef82e891d9512546dc4a88.png

 

How does L2H work?

Decrypted Lineage 2 client files and server script files are structured in a very specific way, one that can be parsed and edited. When developers add or remove content to the L2OFF platform, they do this by hand. This often requires editing more files to add a single item. For instance, if you were to add a single weapon, you would have to edit weapongrp (client), itemname-e(client), itemdata(server) and item_pch(server). L2H does this for you with one input. There are a LOT of variables for items, most of which aren't relevant to the modder, and it's easy to mess it up. One wrong space, and your server won't run, or your item won't work. Instead of adding new items from scratch, modders choose a weapon to use as a template. L2H copies all relevant information, and exposes variables that are interesting to edit in an easily accessible grid view. When you're done editing, click export all to get the correctly formatted files. You can copy those directly into the server and client (client files need to be encrypted again).

 

Can I add custom models and animations?

If you want to add custom models, you will have to do that the old fashioned way. There is a lot more to adding new models to the game, compared to repurposing it. Completely new content like that, however cool it may be, is not the goal of L2H. That being said, once you’ve added the new content, you can use L2H to edit or copy it.

 

Why are you not planning to develop X?

If you have a feature request or suggestion, feel free to message me or comment in this post. The planned features are those that are absolutely possible to deliver. The limits of L2H is well known, and there won’t be an attempt to include features beyond those. If your suggestion falls within the possibilities of L2H, it will most likely get added to the list.

 

When will the next version be available?

When it’s ready. This is an ongoing project, and while updates may be far apart, it’ll be finished one day. The project uses no copyrighted info. It's all relying on reverse engineering the data structure. It only reads the data you feed it. Development will continue until all values available for change have been exposed. If I'm doing anything I shouldn't, please let me know. I have no intention of breaking the law.

 

Will you be running a server?

No. That's not my motivation.

 

Will it work for other versions of Lineage 2?

That’s not the focus of this project, so that’s not a compatibility that will be added. It will work with any version of Lineage 2 that uses the exact same data structure as Epilogue. Should a newer version of L2OFF be made available, there’s a slim chance L2H will be updated to fit that data structure.

 

Will it mess up my files?

Remember to keep backups. There can be bugs.

 

Can I delete items?

You can only delete items you’ve created yourself. If you start removing data from the client and the server, you’ll most likely run into issues. If you delete an item that exists in the game world, you might run into issues as well. It’s better to disable these from being acquired, and then remove them from players’ inventories.

 

 

What's in the current version?

Check the roadmap and version description below.

 

Version 1.0 - Items - Done

Adding, modifying or deleting weapons

Adding, modifying or deleting armors

Adding, modifying or deleting etc items

Adding, modifying or deleting sets

 

Version 2.0 - NPCs

Adding, modifying or deleting NPCs

Adding, modifying, deleting or assigning spawn points

Adding, modifying, deleting or assigning drop lists

Adding, modifying, deleting or assigning multisell shop lists

Adding, modifying, deleting or assigning specific AI

 

Version 3.0 - Items Continued

Adding, modifying or deleting recipes

Modifying item enchant success rate

Cell input options lists, to see which options you have per cell

Adding, modifying or deleting tattoos

 

Version 4.0 - World

Adding, modifying or deleting hunting zones (Won’t appear on map)

Adding, modifying or deleting zone names (Won’t appear on map)

 

Version 5.0 - Quests

Adding, modifying or deleting quests

Adding, modifying or deleting rewards

 

Version 6.0 - Raids

Adding, modifying or deleting Raid Bosses

Creating custom NPC behavior through interface

 

Version 7.0 - Core

Modifying the base attributes, hp, mp, regen etc of each class and race per level

Modifying the XP requirement per level

Modifying race and occupation description

Adding, modifying or deleting loading help tips

Adding, modifying or deleting system messages (“You carefully nock an arrow”)

Modifying server name

 

Version 8.0 - Pets

Modifying pet stats and attributes

 

Version 9.0 - Skills

Adding, modifying or deleting Skills

Modifying when and if classes learn different skills

 

Version 10.0 - Ingame Systems

Adding, modifying or deleting manor items

Adding, modifying or deleting fishing items

 

 

Let me know what you think,

 

-B

 

Edit: I'll leave this up for a few weeks and gauge the interest before deciding the future of the project. Thanks for your interest.

 

Edit2: It seems people are interested, so I'll continue developing this. I started a Discord for anyone interested: https://discord.gg/97yAsCA

 

Edited by Bumble
  • Like 2
  • Thanks 2
  • Upvote 8
Link to comment
Share on other sites

Recommended Posts

  • 0
9 hours ago, sepultribe said:

btw anyone has any idea what the sm in myself.sm might refer to in AI? static/super member/method?

 

shared memory

 

It simply returns CreatureData object for given NPC

Link to comment
Share on other sites

  • 0

Progress update:

 

Droplists are taking a bit longer than anticipated to complete. The parsing and exporting works completely, but I need to create a new structure for storing references between multi droplists and regular droplists. These references will be stored in plain .txt files as well in the /data folder.

 

The reason I'm doing it this way, is so each NPC references 4 droplists (normal, spoil, multi, extra multi). This allows droplists to be reused or reassigned to a new npc by editing one cell. Want an elpy to drop Antharas loot? Sure.

 

It is a little tricky figuring out how to generate the correct IDs for each droplist, as well as which references to store and copy, when cloning a droplist (or part of it). This is different from items, as an item is a whole object by itself. Droplists point in several directions, and the data has to be updated consistently across the board.

 

But I'm making good progress.

 

-B

 

 

  • Upvote 1
Link to comment
Share on other sites

  • 0

Hi, Bumble!

 

I've stumbled upon your topic several days ago, and wanted to share my thoughts here! I'm more of a lurker on maxcheaters for half a year or so now, occasionally reading some topics, but your project has really interested and impressed me, so I decided to register and join the discussion :)

 

I think the idea behind L2Homage is awesome and it can easily become a very valuable tool for any person creating custom Lineage 2 server. And by Custom I really mean something new and unique - new concept of the game, new goals, new motivation for playing the game, new things to explore. I agree with your words in the first message, there are definitely ways to rebuild and reshape L2 world into something unseen before! I think in that way L2 can be seen as a "canvas", which can be shaped into something special and different than what the original game offers; we have pretty much a prepared and crafted world with an extremely wide variety of character/NPC/item models, ready interface, icons, animations, mechanics, etc. It is possible to manipulate all these things into a new concept, and I salute you for taking the initiative to create a tool to allow this to happen - it's amazing! 

 

I would really love to help with a project like this, however I don't have programming skills myself, unfortunately; even thouh I work in a gaming industry, I am involved more with game design, economy and balancing, live operations of games, QA, sometimes marketing and analytics, and other related to that areas. I am not sure if it is possible to create a completely unique server concept by modding files and without any programming involved (please tell me if it is!), but surely this tool would in any case help with a HUGE portion of work that would need to be done to make it happen. Over past 13 or so years, I played on some modded servers, like the Russian BSFG and several others that are more about the RvR idea (I guess BSFG was one of the first ones, it's beta was around 2006-2007 as far as I remember), and for them to make it happen, for sure they also had to put countless hours into modifying files. Streamlining and optimizing it, making it a lot more error-proof and user-friendly, is totally a noble effort, and I do hope it would help cool new projects to emerge :) I would love myself to also work on a new and unique server like this, more so with the help of L2Homage.

 

Even though I cannot help directly (but if I can do something, let me know, I would be glad to participate), I hope this small note of motivation can help with going forward with the project. Looking forward to reading future updates!

 

 

Link to comment
Share on other sites

  • 0

Hey Weedy,

 

Thanks for the morale boost. These droplists are frustrating to work with, but it'll be worth the trouble when it's complete. After droplists are working and the NPC spawning system is in place, the entire item/npc system will be editable (except for in-depth AI editing).

 

I'm hoping to share a version for people to test withing a week or two, depending on my spare time. If you'd like to help out, I'd appreciate if you could help me test it at that point.

 

Quote

I am not sure if it is possible to create a completely unique server concept by modding files and without any programming involved (please tell me if it is!)

It is possible, but it will take significantly longer, and it will be prone to errors. L2H is meant to make it fast and reliable. What only takes a cell-change in L2H, would require manual editing of 4+ different files (server and client).

EDIT: It depends on what you mean by completely unique. If you're adding custom systems to the game, something that's not already in the game, then you need to program it. If you're re-using existing systems, then it's possible without programming.

 

I'm happy to hear you're excited about this project. That's why I'm doing this. I can't wait to see what worlds people create.

 

I'm in a similar industry as you, doing both design and code. One thing I could use help with, and I'm sure you agree, is some guidelines for modders on approaching modding a game like Lineage 2 from the start. If someone sets out to create a whole world on the scale of the existing L2, they're bound to burn out. It's a huge world, with so many npcs and areas.

 

I think as a solo or small development team, it would be better to focus on a small part of the world first, and then expand outwards. I'll be implementing functionality to change the start spawnpoint for players to support this. Instead of different spawn points per race, I think most projects would benefit from a single spawnpoint for all races.

 

I also think it'd be beneficial for projects to lock max levels as modding progresses, depending on the point they allow players in. If modders set out to fully populate the world for players to explore all the way to level 85, they'll probably burn out too.

 

I'm sure more ideas like that will arise from actually using L2H down the line, but it's worth spending some time thinking about these issues. Building the tool is one thing, but helping modders understand how to use it efficiently, is another thing entirely.

 

I'll keep everyone updated as I progress.

 

-B

Edited by Bumble
Link to comment
Share on other sites

  • 0

Progress update:

 

Been working on the droplists. So far, the normal and spoil droplist editing works. I'm currently focusing on multi droplists. I hope to complete it by tomorrow, but there are a lot of loose ends. I'm still aiming to share a test version by next weekend.

 

-B

Link to comment
Share on other sites

  • 0
17 hours ago, Bumble said:

Thanks for the morale boost. These droplists are frustrating to work with, but it'll be worth the trouble when it's complete. After droplists are working and the NPC spawning system is in place, the entire item/npc system will be editable (except for in-depth AI editing).

 

I'm hoping to share a version for people to test withing a week or two, depending on my spare time. If you'd like to help out, I'd appreciate if you could help me test it at that point.

 

 

True! Hopefully it will really help in saving many man-hours in the future for people working with it, this is the best that can happen. Those things would really help to provide some new depth or variety to gameplay. I am also super excited to see the future editing of skills and classes, since I think there are actually many cool things that can be done to make the game more dynamic and skill-based, for example, by playing with skill settings and establishing new unique classes and combos.

 

And yes, I would be very glad to take my time to help with the testing. But I would need some help with setting up the server environment myself (Eressea's latest extender and GF chronicles, as I understood), as I am not very familiar with that, but would really like to get into it.

 

17 hours ago, Bumble said:

 

EDIT: It depends on what you mean by completely unique. If you're adding custom systems to the game, something that's not already in the game, then you need to program it. If you're re-using existing systems, then it's possible without programming.

 

 

Yep, I mean something like, let's say a more common feature for modded servers, an RvR-system on the server, changing the concept of the game from focusing between interactions of clans and alliances to clashing races against each other. Or changing the way primary stats work, e.g. providing different bonus(es) from levelling your STR or WIT. Most likely those types of changes require more in-depth coding knowledge, but I am sure it can also be learnt as a developer skill. There are indeed many wide systems already that can be re-used and re-purposed (like droplists, monster locations, iteming, etc), making gameplay fresh and unique, and without which creating a modded server is not really possible - so L2Homage as a tool for that sounds like exactly just what the doctor order, tbh. :)

 

17 hours ago, Bumble said:

 

I'm in a similar industry as you, doing both design and code. One thing I could use help with, and I'm sure you agree, is some guidelines for modders on approaching modding a game like Lineage 2 from the start. If someone sets out to create a whole world on the scale of the existing L2, they're bound to burn out. It's a huge world, with so many npcs and areas.

 

Yeah, you are right. Any sorts of guidelines, prerequisites, possibly more documentation for setup and different features, especially as a free and/or open-source project is always something that people who would get into the modding would greatly appreciate. Understanding the scale of these projects and scalability is also maybe something that is better to be understood and considered on the first stages of modded L2 world/server development, to be able to estimate the effort and time needed to go into the project. And in turn, yeah, it helps to create the tools to shape such projects with. As I have been thinking more about it myself past several weeks, and now finding your topic, I can also try to think of some possibilities I could be of hopefully any help with these, if it can support the project, and see whether I can come up with something. Let me know if there are any specific things you have on your mind! :)

Link to comment
Share on other sites

  • 0

Progress update:

Droplist editing is almost completed. It took a lot longer than expected. There are so many things that a user can do to break the droplist, so I had to implement a lot of errorproofing. It's still possible to mess it up though, but not as innocently.

I still need to implement delete functionality and hooking it up to the specific NPC, but I'm getting close to being done with NPCs/Droplists/Items. Again, when that's completed, I'll move to spawning and then prepare a test version.

 

#weedy

RvR systems are probably hand-made for those servers. They're most often available on L2j servers, which (as people in here would probably agree with) just isn't as enjoyable as L2Off files. Because of L2j's java core, it's a lot easier to modify. I'm sure people can figure out how to implement it on L2Off as well though, but I imagine it'll take quite some effort. If anyone knows otherwiser, please let me know.

 

The examples you give with changing how primary stats work will be possible through L2H. I've planned for that, so if you want to do your own calculations, go ahead. It should be available in version 7.0 (which is some time away though). After 2.0, development will be fast though. Droplists are some of the heaviest tasks (except for items and AI), because of all the variables. The next versions should be easier to develop.

 

As for the guidelines for using the project, I think that's something we'll have to figure out once we can actually play with it a bit. We'll just take it as it comes.

 

If you're interested in setting up a test-station, there are a few good guides on here. You'll want eressea's extender and the Gracia Epilogue files. I'm a little too busy to even setup my own test platform right now, so it'll have to wait :) I managed to test the item system before my server broke, so I know that works. I can tell NPCs/droplists should work similarly, but only time will tell.

 

Edit: If someone has an extra server I can use to test on, that'd be awesome. Otherwise, it'll take a bit longer to release a test version. I'll only be uploading stuff to the scripts folder for now. Later, I'll be uploading split AI files as well.

 

Edit2: Also looking for a discord or similar, where I can talk with people with similar L2 interests

 

-B

Edited by Bumble
Link to comment
Share on other sites

  • 0
7 hours ago, Bumble said:

Edit2: Also looking for a discord or similar, where I can talk with people with similar L2 interests

 

We usually use Skype for chatting (at least me and people I communicate with)

Link to comment
Share on other sites

  • 0

#Eressea

Unfortunately, I can't use skype in my current setting. I understand why that would be a convenient option though.

 

#Sepultribe

That's a good idea. I might just do that. That would be a convenient place to report bugs as well.

Link to comment
Share on other sites

  • 0

Progress update:

 

Npc cloning and editing working now. Exports to both server and client files.

Droplists cloning and editing _seems_ to be working now. I wouldn't be surprised if it doesn't. My first tests are successful though.

 

When adding new multi droplists, the droplist parts are automatically created, ready for input. Custom droplist are stored locally to protect them from being overwritten when an NPC droplist reference is changed.

 

I only need to implement the Delete functionality for NPCs and Droplists, and then I can move on to spawning.

 

I considered making a Discord channel, where people can talk about mods, report bugs, get help from other modders and request features. I don't have time to moderate it though, so I'd need help with that (assuming anyone wants to join).

 

I'm going to work on the delete functionality now.

 

Edit: Droplists broken again. Great. Gotta focus on that instead.

 

Edit2: Droplists seem to be working now. Delete functionality tomorrow, then spawn.

Edited by Bumble
  • Like 1
  • Upvote 1
Link to comment
Share on other sites

  • 0

Alright thanks, I'll try to get a discord up later today.

 

I don't have any new screenshots to show, as I've been focusing on droplists for now. It's all data structure, storage and exporting.

 

I'll share the look of the initial spawn functionality when I get to that, I think it'll be pretty neat.

 

Link to comment
Share on other sites

  • 0

Progress update:

I've been working on droplists again again again again (cont.). There are so many cross references, every time I edited a cell, something got lost somewhere. I think I've squashed the bugs for now, but there could be more. I'm finally ready to move on to delete functionality though. Hopefully that won't take as long!

 

I also created a discord channel. If you feel like joining, here's the discord invite link:

https://discord.gg/97yAsCA

 

Let's see if it takes off, I'm open to suggestions. Also, I'd like some help maintaining the discord. I really don't care too much about people misbehaving, unless it starts taking over the channel.

Link to comment
Share on other sites

  • 0

Progress update:

Delete functionality is just too boring to focus on right now. I felt like I was falling asleep, and I thought "You know what? I don't have to do something this boring right now". So I moved on to the spawning system. I'm looking at the npcpos file now, figuring out the structure. I think I'll have some questions about a few of the variables. That's for later though.

 

The Item/npc add/editing functionality works now, from what I can tell. It exports it correctly too, though I still need a server to test on. I'll get to that when I'm done with the spawning system.

 

The initial spawning editor looks like this:

GmE09bq.png

 

The different lists will contain the following info:

 

Maps: ID of each block in the world (for instance 20_21 for Cruma). I think I'll parse them with easier names to recognise instead of numbers, since there's not that many. Selecting a map loads spawn areas.

 

Spawn areas: List of each spawn zone in the selected map. Selecting a spawn area will draw a polygon on the map, representing the area.

 

NPCs: Shows which NPCs are set to spawn in the selected spawn area.

Properties: Exposes the different variables for the selected NPC, for easy editing.

 

Map 0 - Map 6: Sometimes each map has several layers - at most 7. There are no identifiers for the terrain zones, so if the polygon doesn't make any sense, switch to another map to see the overlay on another layer instead.

 

Add Npc / Remove Npc: Self explanatory.

 

I'm off for today!

 

-B

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.




×
×
  • Create New...