Ir para conteúdo
  • Cadastre-se
Elfocrash

[Source] L2kt - Interlude Open Source in Kotlin

Posts recomendados

Hello everyone

L2kt is a project based on 379 aCis currently migrating from Java to Kotlin

 

Project goals

  • Migrate from Java to 100% Kotlin.
  • Refactor a lot of the terrible code in aCis (most of it).
  • Create an advanced plugin based API for people to write their customs in without messing up with the source.
  • Migrate from Ant to Gradle.
  • Dockerise the project.
  • Keep it open source. The main engine itself will never be private.

 

Current stage

The project has been migrated to 20% Kotlin. It is already 20 thousand lines less code, just by migrating. There is not major refactoring that has taken place yet.

 

Sources

If you can do any of those things then feel free to give me a hand.

https://github.com/Elfocrash/L2kt

It's licensed under GLP-3.0 mainly because that is the L2j license and I don't have any right to sublicense.

The project is fully managed on Discord for now: https://discord.gg/K7kyNpv

 

(To be updated soon)

  • Gostei 11
  • Amei 4
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Precisando de Dedicado ou VPS?

Conheça a L2JCenter
26 minutes ago, Dwbryel said:

Interesting, I've never heard of Kotlin

It's a really nice JVM language that's getting really popular and have A TON of advantages, the main one being, it's way cleaner and faster to write.

Example in Java:

package com.l2kt.gameserver.model.pledge;	

 public class SubPledge	
{	
	private final int _id;	
	private String _subPledgeName;	
	private int _leaderId;	

 	public SubPledge(int id, String name, int leaderId)	
	{	
		_id = id;	
		_subPledgeName = name;	
		_leaderId = leaderId;	
	}	

 	public int getId()	
	{	
		return _id;	
	}	

 	public String getName()	
	{	
		return _subPledgeName;	
	}	

 	public void setName(String name)	
	{	
		_subPledgeName = name;	
	}	

 	public int getLeaderId()	
	{	
		return _leaderId;	
	}	

 	public void setLeaderId(int leaderId)	
	{	
		_leaderId = leaderId;	
	}	
} 

 

The EXACT same thing in Kotlin:

package com.l2kt.gameserver.model.pledge

 data class SubPledge(val id: Int, var name: String, var leaderId: Int) 

 

There are many many others, I highly recommend reading up on it.

  • Gostei 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

People are already old in java and did not want to learn from laziness.
Do you really think they'll be interested in a new language of programation?
Nice job, but I think there will only be requests and no help!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Just now, SkyDoidao said:

People are already old in java and did not want to learn from laziness.
Do you really think they'll be interested in a new language of programation?
Nice job, but I think there will only be requests and no help!

You don't have to learn the language. You can keep writing java. Kotlin is interopable with Java, which means you can have both languages in the same project.
L2kt will have an API to allow for customs without the need to change the source unless there is a special case.

I am not writing it in Kotlin because of the community but because of me. It just also happens to be open source.

 

  • Gostei 3
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
19 minutes ago, Dwbryel said:

progress is very fast Wow!

I'm integrated with how this will work 😂

First step will be to test the project and see if there are any bugs created from the migration. In parallel with that, a lot of ThreadPool executions will be replaces with coroutines. That's where the performance improvements will come into place and differentiate use from acis.

  • Gostei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 14/02/2019 at 16:37, SkyDoidao disse:

People are already old in java and did not want to learn from laziness.
Do you really think they'll be interested in a new language of programation?
Nice job, but I think there will only be requests and no help!

People are not willing to learn something new is fact, I understand. However, I may be wrong, but L2jBrasil is a forum to learn, but many confuse it with a forum full of packs ready to be online, hence the various applications! But deciding not to learn something new is stupid.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É muito bacana ver alguém fazendo algo tão aprimorado como isso, pena que foi para uma chronica morta. 

Se eu fosse você não deixaria open source, daqui a pouco alguém pega teu projeto, troca de nome, adiciona uns java mods e começa a vender. 

Compartilhar este post


Link para o post
Compartilhar em outros sites
26 minutos atrás, Elesis disse:

É muito bacana ver alguém fazendo algo tão aprimorado como isso, pena que foi para uma chronica morta. 

Se eu fosse você não deixaria open source, daqui a pouco alguém pega teu projeto, troca de nome, adiciona uns java mods e começa a vender. 

Acho interessante a galera querer privar as coisas, que não são pra ser, igual respondi ao amigo la em cima, L2jBrasil é um fórum de aprendizado, apesar de muitos não ver isso. A ideia dele é ótima, a nossa cultura que é ruim! Sou fruto dos OpenSource aqui do forum, graças a eles, eu consigo fazer oque eu gosto hoje em dia, e irei seguir a iniciativa, e modificar a L2jBlueHeart. Quem sabe não saia uma L2KT BlueHeart

  • Gostei 1
  • Amei 3

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 22/02/2019 at 13:25, TurtleLess disse:

Acho interessante a galera querer privar as coisas, que não são pra ser, igual respondi ao amigo la em cima, L2jBrasil é um fórum de aprendizado, apesar de muitos não ver isso. A ideia dele é ótima, a nossa cultura que é ruim! Sou fruto dos OpenSource aqui do forum, graças a eles, eu consigo fazer oque eu gosto hoje em dia, e irei seguir a iniciativa, e modificar a L2jBlueHeart. Quem sabe não saia uma L2KT BlueHeart

Não quero privar as coisas, meu jovem, isso é algo que acontece e muito e você sabe. Hoje em dia mexer com a estrutura de uma rev vem puramente do prazer mesmo, da satisfação de fazer algo que goste, por que necessidade, não há. Você pode pegar uma aCis e abrir um server se for bem divulgado ele vai lotar e vai morrer assim como acontece com todo e QUALQUER servidor interlude em pouquíssimo tempo. 

Boa sorte com seus projetos BlueHeart, seria bacana se você investisse também em Gracia final ou epilog quem sabe, afinal de contas não existe nenhum projeto L2J sendo trabalhado no mesmo e muita gente adora tais chronicas. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Mudanças no Login

    Preste atenção às mudanças no método de login.

    Com a migração para nomes de usuário IPB4 não existe mais.

    Você deve usar seu nome de exibição ou email em vez de nome de usuário.




     



  • Quem Está Navegando

    Nenhum usuário registrado visualizando esta página.

  • Posts

    • L2JFROZEN-1132 Não consigo colocar essa flagzone já tentei de várias formas, só consegui colocar uma pequena parte, muito pequena mesmo. Alguém me ajuda.. O lugar que eu quero colocar flag é Valley of the Lords <!-- Area PVP Zone -->     <zone id='9999' type='FlagZone' shape='NPoly' minZ='-1750' maxZ='-1049'>           <node X="13962" Y="-120492" />           <node X="16534" Y="-132593" />           <node X="21955" Y="-133760" />           <node X="24727" Y="-129213" />           <node X="36718" Y="-119645" />           <node X="35583" Y="-117613" />         </zone>
    • Alguém poderia disponibilizar essas tatoos para mim por favor? para cronica Freya. Tattoo of Power - 10% P.Atk Tattoo of Fire - 10% M.Def Tattoo of Resolve - 10% Speed Tattoo of Flame - 10% M.atk Tattoo of Bravery - 5% Critical Rate Tattoo of Absolute - 5% HP Tattoo of Soul - 10% Atk Speed Tattoo of Avadon - 10% Caste Speed Tattoo of Doom - 10% P.def Tattoo of Divine - 10% Critical Atk
    • BUENOS DIAS ME PUEDEN AYUDAR PORFAVOR  ,COMO TENGO QUE CREAR ESTA TABLE EN NAVICAT  LES DEJO LA INFORMACION CREATE TABLE `subclass_list` (   `player_id` varchar(40) NOT NULL,   `currentsub` int(3) NOT NULL DEFAULT '0',   `sub_index` int(3) NOT NULL DEFAULT '0',   `subclassid0` int(3) NOT NULL DEFAULT '-1',   `subclassid1` int(3) NOT NULL DEFAULT '-1',   `subclassid2` int(3) NOT NULL DEFAULT '-1',   `subclassid3` int(3) NOT NULL DEFAULT '-1' ) ENGINE=MyISAM DEFAULT CHARSET=latin1;  
    • resolvido.
×
×
  • Criar Novo...