Jump to content

Recommended Posts

Posted (edited)

Good afternoon, gentlemen.
I’d like to ask a question to those who know their stuff — and just get some advice.

Let me start with the main point.

I want to try learning Java. Just for myself — I simply like programming, and it’s a small hobby of mine. Though, perhaps it’s too early to say I really like Java, since I don’t actually know it well yet.

I’ll get straight to the point.
Back in my youth, like many others, I played Lineage 2. Later, I became interested in creating servers and even made my own — we had around 70 players, all schoolkids like me.

I learned how to install builds, add NPCs and various add-ons “from the internet” back then.
But my attempts to create my own Lineage 2 additions in Java almost always failed. At best, I could slightly modify ready-made code, but not write anything from scratch.

My interest in Lineage 2 and Java has stayed with me to this day.
For me, it’s a creative process — a favorite game where you can build your own “sandbox.”

I’d really like to hear from the community about where you started.
In your opinion, what’s the best way to learn Java using Lineage 2 as an example?

I don’t have a clear learning plan — and that’s probably the problem.
I’ve tried reading Schildt’s book, and I’ve also tried studying Java source codes of various server builds by poking around to understand how the server works and how programs are written. I can’t say I understand nothing — I do get some things, and I believe I have a knack for it. But it’s not systematic.

Maybe I really do need advice from more experienced people, to find a strategy that’s both effective for learning Java and interesting because it’s connected to Lineage 2 — not just writing abstract programs “for nothing.”
In Lineage 2, you can see the result right away — and I get genuinely happy even from small successes.

So here’s the main point: I’d like to know where you started.
Is it even worth combining Java and Lineage 2?

Recently, ChatGPT has been a huge help — thanks to it, I’ve made some progress and started to understand the server structure at least a little. But there’s one issue: if I just copy and paste, the result works — but without ChatGPT, I can’t reproduce it on my own.

I’ve been working with PwSoft source files — I think many people know them. Why exactly them? I can’t really say — probably because there are lots of ready-made add-ons for this build online, and I originally focused more on modifying existing code than writing my own.

I worked with PwSoft for a long time.
Then, on ChatGPT’s advice, I switched to aCis — it’s cleaner, more minimalistic, without unnecessary “clutter.” It’s easier to understand where everything is located.
I installed the aCis sources, everything compiles fine, but… if in PwSoft I could at least navigate the code and write simple methods, in aCis I couldn’t even make a basic NPC that gives noblesse for adena.

That’s why I decided to write this post — just to talk about learning Java through Lineage 2, to hear your opinions, your stories, your approaches.

Maybe someone will say: “Don’t bother, it’s a waste of time.” I’ll accept those answers too.
But I’d still like to hear different perspectives.

If you can, please recommend good video courses on Java that would help me learn faster and in a more structured way.

To repeat: this is something from my childhood that I never finished.
My job is stable now, and I have time — at least sometimes. I can work on this calmly, as long as my learning goes in the right direction.

I think you get it: this is something “for the soul,” and I really want to grow in it.

Thanks to everyone who read to the end. I really appreciate any advice.
And if someone is open to chatting privately or by voice — I’d gladly talk, and I’m happy to “buy a beer” for a constructive conversation.

Peace to everyone!

 

 

 

Добрый день, господа.
Я хотел бы задать вопрос тем, кто знает свое дело — и просто получить совет.

Начну с главного.

Я хочу попробовать изучить Java. Только для себя — мне просто нравится программирование, и это мое маленькое хобби. Хотя, возможно, еще слишком рано говорить, что мне действительно нравится Java, так как я еще не очень хорошо ее знаю.

Я сразу перейду к делу.
В юности, как и многие другие, я играл в Lineage 2. Позже я увлекся созданием серверов и даже сделал свой — у нас было около 70 игроков, все школьники, как и я.

Я научился устанавливать сборки, добавлять NPC и различные дополнения "из интернета" еще тогда.
Но мои попытки создать свои собственные дополнения Lineage 2 на Java почти всегда терпели неудачу. В лучшем случае я мог бы немного доработать готовый код, но не писать ничего с нуля.

Мой интерес к Lineage 2 и Java не покидает меня и по сей день.
Для меня это творческий процесс — любимая игра, в которой можно построить свою «песочницу».

Мне очень хотелось бы услышать от сообщества о том, с чего вы начали.
На ваш взгляд, как лучше всего изучать Java на примере Lineage 2?

У меня нет четкого плана обучения — и, вероятно, в этом проблема.
Я пробовал читать книгу Герберта Шилдта, а также пытался изучать исходные коды Java различных серверных сборок, копаясь вокруг, чтобы понять, как работает сервер и как пишутся программы. Не могу сказать, что я ничего не понимаю — я кое-что понимаю, и я верю, что у меня есть к этому способности. Но это не систематично.

Возможно, мне действительно нужен совет от более опытных людей, чтобы найти стратегию, которая была бы одновременно эффективной для изучения Java и интересной, потому что она связана с Lineage 2, а не просто писать абстрактные программы «впустую».
В Lineage 2 результат виден сразу — и я искренне радуюсь даже от маленьких успехов.

Итак, вот главное: я хотел бы знать, с чего вы начали.
Стоит ли вообще совмещать Java и Lineage 2?

В последнее время ChatGPT очень помог — благодаря ему я добился некоторого прогресса и начал хотя бы немного разбираться в структуре сервера. Но есть одна проблема: если я просто скопирую и вставлю, результат работает, но без ChatGPT я не могу воспроизвести его самостоятельно.

Я работал с исходными файлами PwSoft — думаю, многие их знают. Почему именно они? Я не могу точно сказать — вероятно, потому что в сети есть много готовых дополнений для этой сборки, и я изначально больше сосредоточился на модификации существующего кода, чем на написании своего.

Я долгое время работал с PwSoft.
Потом, по совету ChatGPT, я перешел на aCis — он чище, минималистичнее, без лишнего «беспорядка». Так проще понять, где что находится.
Я установил исходники aCis, все нормально компилируется, но... Если в PwSoft я мог хотя бы ориентироваться в коде и писать простые методы, то в aCis я не смог сделать даже базового NPC, который дает благородство для adena.

Вот почему я решил написать этот пост — просто чтобы поговорить об изучении Java через Lineage 2, услышать ваши мнения, ваши истории, ваши подходы.

Может быть, кто-то скажет: «Не заморачивайтесь, это пустая трата времени». Я тоже приму эти ответы.
Но я все же хотел бы услышать разные точки зрения.

Если можете, пожалуйста, порекомендуйте хорошие видеокурсы по Java, которые помогут мне учиться быстрее и более структурированно.

Повторюсь: это что-то из моего детства, которое я так и не закончил.
Моя работа сейчас стабильна, и у меня есть время — хотя бы иногда. Я могу спокойно работать над этим, пока мое обучение идет в правильном направлении.

Думаю, вы поняли: это что-то «для души», и я очень хочу в этом расти.

Спасибо всем, кто дочитал до конца. Я очень ценю любой совет.
А если кто-то открыт для личного общения или голосом — я с удовольствием поговорю, и с удовольствием «куплю пиво» для конструктивного разговора.

Всем мира!😀🤝

Edited by Serhii
Posted

personally for me, i found it easier to learn when i had a clear idea of what i wanted to make. after i had an idea i would break down the logic of the function and use existing examples to achieve it. if i wanted to make a npc that sold nobles for adena, the first step would be to find..

 

1 - how to create a new instance of npc (copy paste existing npc instance)

2 - find a similar npc that has a bypass which takes adena and checks if you have enuf - for example a teleporter

3 - find where noblesse is set

4 - piece together working examples and test

 

its never too late to learn especially if its a hobby :3

 

  • Upvote 1
Posted

I was watching l2jserver commits back in 2004/2006, then shyla's project and successor of (i remember tryskel crying there for the bugs commited) l2jfrozen and thats how i have learned what SVN was, how the timeline worked, how mistakes were commited, how fixes worked, somehow i've learned python, java and SQL from that, then i've learned what compile was, and in no time with my previous PHP knowledge it was not hard to grasp the logic and make my first message on enterworld, after that it was a python even, after that it was a python services npc and so on.

:pepe-gun:python sucks on l2j btw

 

:kim:

  • 3 weeks later...
Posted (edited)

First, don't really follow the "main voice", moreover if you consider it an hobby. Simply do what you want, you got only one life so use it as you want. If you make it an hobby, it's exactly like piano, or velo - only practice makes you better.

 

Secondly, how do you learn things ? It's actually a really important question, since some can simply be scholar, read books (theory) then practice ; and some simply can't read books. I'm the second type, I hated school, I find it boring - my knowledge in Java comes from try-and-fail. You improve your coding style every year or so, I can myself rewrite my own code (which I already considered top-notched) after a while. You always learn something new - even if Java barely evolves. L2J is a fun way to learn programming, it's a giant sandbox where you can edit anything, and I believe it should be taken as it.

 

My own way of learning was as follow :

  • Add existing customs, no matter what they are : the point is to know main classes used by L2J / customs. L2J is barely Java knowledge ; the true knowledge is to know WHAT to search in WHICH location (what I call, organization). You have to understand than EVERYTHING you think already exists, in a form on another, in the source code. A custom is only the association of the different mechanisms you found "here and there", glued together in a proper goal.
  • Once you know main classes to edit, and the customs you added are compiling fine, the main point is to know WHAT exactly you DID. Try to understand WHY and WHERE you actually copied the code.
  • Third point would be to MANIPULATE the customs you added in order to fit your wish. First edit little values, then logic conditions ; eventually add a new Config, or a new functionality to the custom.
  • Fourth point would be to begin to craft your own ideas. Once again, EVERYTHING already exists, in a form or another. You want a cycled event ? You got Seven Signs main task as exemple. Npc ? Search any type of Npc and figure out what it does.
  • Fifth point would be to understand Java - mostly containers (WHAT and WHERE to use them), variables types and main Java mechanisms (inheritance, static modifier, etc). You should also begin to cut your code into maintainable classes or methods. Java can actually run without optimization, but bigger your ideas, more optimized and well-thought it should be. It's direct saved time in the future, and you would thank yourself doing so.

Main tips :

  • ALWAYS use any type of versioning system - GIT or SVN. It allows to save your work, step by step and eventually revert back anytime you want if you terribly messed up.
  • L2J is 80% organization knowledge, and 20% Java knowledge. Basically, if you know WHAT and WHERE to search, if you aren't dumb, it's easy to replicate and re-use things. Cherry on top is to use a already good coded pack to avoid copy-paste crap and get bad habits. Avoid any type of russian or brazilian packs, for exemple - their best ability is to leak someone's else code.

Obviously you need some default sense of logic, but Java and programming in general help you to improve it.

 

Finally, most of your questions could be solved joining related Discord (at least for aCis, I can't speak for others) - from the moment your question was correctly asked (and you seemed to search for the answer). My community (and myself) welcomes newbies, but got some issues with noobies.

 

The simpliest is to try, fail and repeat until you succeed - it sounds stupid, but that's basically how life works.

 

PS : about Java ressources, before ChatGPT, it was mostly about stackoverflow website, and site like Baeldung's one. With ChatGPT and alike, you generally double-cross AI output to avoid fucked up answers. Also, care about AI, they are often hallucinating really hard, even today. They can give you complete wrong answer, you tell them they are wrong, and they say "indeed, I suck, sorry - here's a new fucked up answer". You shouldn't 100% rely over AI answer, even if that can give sometimes legit answers, full code or just skeletons of ideas.

 

PPS : I don't think there are reliable ressources regarding L2J itself, also most of the proposed code decays pretty fast if the source code is actually maintained (at least for aCis). Still, old coded customs for old aCis sources are actually a good beginner challenge to apply on latest source.

Edited by Tryskell
Posted (edited)

:RATge:in conclusion when somebody who has a project for 10+ years still on development writes an e-say to try until you succeed and then advertises his project, one of the reasons is he needs money, so l2j has once more become pure expensive hobby, you wont make money out of it.

 

You can still use L2jFrozen and get better results for this, i know some people that done it :kekW:

 

:shrug:keep in mind that C in aCis stands for Crappy, and after all these years its not a cool wordplay anymore, its a fact, prove me wrong.

:kim:

Edited by Nightw0lf

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock