Jump to content


  • Please log in to reply
[WIP] RetroPixelLoader - Mod Framework - Stuff Completed: Working devkit!
42 replies to this topic - Started By cebarks, Oct 18 2014 12:36 AM

#1 cebarks

cebarks
  • Members
  • 26 posts
  • Pip
  • Skype:cebarks
  • Steam ID:cebarks
  • LocationDenver, Colorado

Posted 18 October 2014 - 12:36 AM

NEWS:

Spoiler

 

Hey Everyone!

 

I just wanted to share a little project I've been working on recently and thought maybe someone out there would find it interesting: 

 

https://github.com/R...etroPixelLoader
 

Hopefully, sometime in the future it will be a mod framework for people to use that will load mods and keep them compatible with each other (think MinecraftForge; which RPL's design is very similar to). Right now it's in the early stages of that end goal. Currently it wraps the start up and shutdown of the game and allows mods to define their own shutdown and startup behavior.

 

Do people have any interest in this? So let me what you think! 

 

P.S. Any java developers out there who are interested in helping out or just in the project itself, please contact me somehow (i.e. comment, PM, Skype, Steam, etc)

 

P.P.S. This is not the official mod API for RPC. 


  • 0

RetroPixelLoader! <------ Click me

 

------------------------------------------

Best way to contact me: anten@cebarks.net

------------------------------------------

 

OS: Microsoft Windows 7 Ultimate

Processor: Intel i7 4790k @ 4.7GHz

RAM: 16GB @ 1600MHz

GPU: Asus Strix GTX 980

Primary Drive: Crucial 512GB SSD

Secondary Drive: 1TB RAID 1

 

 


#2 CodePoKE

CodePoKE
  • Members
  • 13 posts
  • Pip

Posted 18 October 2014 - 05:11 AM

More than willing to help out! :-)

Maybe it's interesting to look at WebLAFs PluginManager?
(WebLAF itself can also be used freely for open-source projects)

I also see you're already building against the official packages? (rpc.launcher.Launcher)


  • 0

Information is Ammunition


#3 Dragonisser

Dragonisser
  • Members
  • 154 posts
  • Pip
  • Skype:Dragonisser
  • Steam ID:Dragonisser
  • LocationGermany

Posted 18 October 2014 - 07:53 AM

I was waiting for this ^^ Seems like you a rebuilding forge for retropixelcastles :P


  • 0

#4 zblu64

zblu64
  • Staff
  • 104 posts
  • Pip
  • Steam ID:zblu64
  • LocationCalifornia

Posted 18 October 2014 - 10:25 AM

Sounds like a cool idea!  Just keep in mind Ray still has a lot of work to do on the game so any mod plugin would probably need to be changed a lot as he continues to develop the game.


  • 0

You can't get there from here


#5 cebarks

cebarks
  • Members
  • 26 posts
  • Pip
  • Skype:cebarks
  • Steam ID:cebarks
  • LocationDenver, Colorado

Posted 18 October 2014 - 12:26 PM

Sounds like a cool idea!  Just keep in mind Ray still has a lot of work to do on the game so any mod plugin would probably need to be changed a lot as he continues to develop the game.

Yeah, I know. At this point it is version independent. 

 

I was waiting for this ^^ Seems like you a rebuilding forge for retropixelcastles :P

Yeah, forge is a huge inspiration for this!

 

More than willing to help out! :-)

Maybe it's interesting to look at WebLAFs PluginManager?
(WebLAF itself can also be used freely for open-source projects)

I also see you're already building against the official packages? (rpc.launcher.Launcher)

Yeah I am  :P At some point to create the API i'll need to hook into the core classes.


  • 0

RetroPixelLoader! <------ Click me

 

------------------------------------------

Best way to contact me: anten@cebarks.net

------------------------------------------

 

OS: Microsoft Windows 7 Ultimate

Processor: Intel i7 4790k @ 4.7GHz

RAM: 16GB @ 1600MHz

GPU: Asus Strix GTX 980

Primary Drive: Crucial 512GB SSD

Secondary Drive: 1TB RAID 1

 

 


#6 zblu64

zblu64
  • Staff
  • 104 posts
  • Pip
  • Steam ID:zblu64
  • LocationCalifornia

Posted 18 October 2014 - 01:34 PM

I'm sure Ray's happy that people are interested enough in his game this early on to do something like this.  I'm just hoping some people won't get bent out of shape like they do when Mojang rewrites something and then Forge, Bukkit, etc and plugins written based on them have to be redone.


  • 0

You can't get there from here


#7 Hexicube

Hexicube
  • Members
  • 101 posts
  • Pip

Posted 18 October 2014 - 03:18 PM

I was actually planning on making a mod loader once the game hits a nice feature-complete stage (and has public source for buyers), so I don't have to rewrite it 10000 times. I have some basic dependency resolving and main class loading (via loading a file in the jar to get the list of dependencies and the main class path), so maybe we could work together on this once the game progresses more.

 

Personally, I don't like the thought of using interfaces. I feel like it's much cleaner by just having an abstract class that you can extend for the functionality. That way, you aren't sifting through literally every class looking for the annotations in case they exist. It does mean that the mod maker needs to declare their stuff, but forge kind of worked that way with the block/entity declarations anyways.


  • 0

#8 Luka

Luka
  • Members
  • 506 posts
  • Pip
  • Steam ID:cheeselumps
  • LocationIreland.

Posted 18 October 2014 - 03:36 PM

He said he has no idea right now about mod support, and he MIGHT release source code. Just putting that out there.


  • 0

#9 CodePoKE

CodePoKE
  • Members
  • 13 posts
  • Pip

Posted 18 October 2014 - 03:42 PM

What do you exactly mean by you don't like using interfaces?
As in, overriding a lifecycle interface in which you have to create/setup your mod?

The different aspects of Minecraft needed different forms of implementation for modding.
Yes, blocks worked through implementing abstract classes which gave base behavior, but event interception worked through annotations. So I don't fully see what your argument is in this?

I expect we will have different approaches to different aspects of the game.
(E.g.: an Entity base class for villages / monsters etc).

On a sidenote, Reflections solves 95% of the work of scanning the classpath.
We can remove the burden of implementation from the coder with regards to registering classes and have this done automatically through discovery.

 


  • 0

Information is Ammunition


#10 Hexicube

Hexicube
  • Members
  • 101 posts
  • Pip

Posted 18 October 2014 - 05:10 PM

What do you exactly mean by you don't like using interfaces?
As in, overriding a lifecycle interface in which you have to create/setup your mod?

The different aspects of Minecraft needed different forms of implementation for modding.
Yes, blocks worked through implementing abstract classes which gave base behavior, but event interception worked through annotations. So I don't fully see what your argument is in this?

I expect we will have different approaches to different aspects of the game.
(E.g.: an Entity base class for villages / monsters etc).

On a sidenote, Reflections solves 95% of the work of scanning the classpath.
We can remove the burden of implementation from the coder with regards to registering classes and have this done automatically through discovery.

I dislike using @ annotations, it seems weird to me and I find overriding functions of a class looks more appropriate, not sure why.

 

I'm aware of how minecraft modding worked, having used both forge and bukkit. I appreciated that bukkit used the @ in that instance as it meant you just had to make a function with the event you wanted to listen to as the input, because they did it in a nice way.

 

Reflections are likely to break given that it's still InDev, though I agree they are a suitable method once the game hits a more stable version. Thank god Ray doesn't obfuscate.

 

 

 

He said he has no idea right now about mod support, and he MIGHT release source code. Just putting that out there.

 

I'm pretty sure he wants to release the source code *at some point* in the future, just to make some people's lives easier (i.e. ours). I'd love for official mod support to exist, and would also love to work on that mod support and give modders every last thing they need.


  • 0

#11 cebarks

cebarks
  • Members
  • 26 posts
  • Pip
  • Skype:cebarks
  • Steam ID:cebarks
  • LocationDenver, Colorado

Posted 18 October 2014 - 05:16 PM

I was actually planning on making a mod loader once the game hits a nice feature-complete stage (and has public source for buyers), so I don't have to rewrite it 10000 times. I have some basic dependency resolving and main class loading (via loading a file in the jar to get the list of dependencies and the main class path), so maybe we could work together on this once the game progresses more.

 

Personally, I don't like the thought of using interfaces. I feel like it's much cleaner by just having an abstract class that you can extend for the functionality. That way, you aren't sifting through literally every class looking for the annotations in case they exist. It does mean that the mod maker needs to declare their stuff, but forge kind of worked that way with the block/entity declarations anyways.

I would absolutely be willing to work with you, add me on skype or steam and we can talk about it sometime. I chose to use Annotations because of the cleanliness of the code that ends of using them and the versatility and customizability. 

 

He said he has no idea right now about mod support, and he MIGHT release source code. Just putting that out there.

This is by no means official mod support. Creating this does not require having access to the source code, so it is not dependent on what Ray decides to do. That being said if he prefers that we not continue on this project, I for one will respect his wishes.


  • 0

RetroPixelLoader! <------ Click me

 

------------------------------------------

Best way to contact me: anten@cebarks.net

------------------------------------------

 

OS: Microsoft Windows 7 Ultimate

Processor: Intel i7 4790k @ 4.7GHz

RAM: 16GB @ 1600MHz

GPU: Asus Strix GTX 980

Primary Drive: Crucial 512GB SSD

Secondary Drive: 1TB RAID 1

 

 


#12 Rayvolution

Rayvolution
  • Developer
  • 1,890 posts
  • Pip
  • Steam ID:Rayvolution
  • LocationTexas

Posted 18 October 2014 - 07:26 PM

He said he has no idea right now about mod support, and he MIGHT release source code. Just putting that out there.

 

Yes, I'll be releasing the source eventually. I just have to come up with a "For educational or modding purposes only, can't be used in conjunction with any other software other than Retro-Pixel Castles" license. Whatever that is. :)


  • 0
Rise to Ruins Developer

#13 Hexicube

Hexicube
  • Members
  • 101 posts
  • Pip

Posted 18 October 2014 - 08:08 PM

Yes, I'll be releasing the source eventually. I just have to come up with a "For educational or modding purposes only, can't be used in conjunction with any other software other than Retro-Pixel Castles" license. Whatever that is. :)

 

You could just stick the whole thing under a CC Non-commercial Share-alike license, pretty sure that allows asking for donations for the work done.


  • 0

#14 cebarks

cebarks
  • Members
  • 26 posts
  • Pip
  • Skype:cebarks
  • Steam ID:cebarks
  • LocationDenver, Colorado

Posted 18 October 2014 - 09:19 PM

What do you exactly mean by you don't like using interfaces?
As in, overriding a lifecycle interface in which you have to create/setup your mod?

The different aspects of Minecraft needed different forms of implementation for modding.
Yes, blocks worked through implementing abstract classes which gave base behavior, but event interception worked through annotations. So I don't fully see what your argument is in this?

I expect we will have different approaches to different aspects of the game.
(E.g.: an Entity base class for villages / monsters etc).

On a sidenote, Reflections solves 95% of the work of scanning the classpath.
We can remove the burden of implementation from the coder with regards to registering classes and have this done automatically through discovery.

 

 

This being said, it will be very difficult to mod RPC because of the object implementation from what i've seen so far... At this point I really have no idea how we're going to even mod it to a basic extent.


  • 0

RetroPixelLoader! <------ Click me

 

------------------------------------------

Best way to contact me: anten@cebarks.net

------------------------------------------

 

OS: Microsoft Windows 7 Ultimate

Processor: Intel i7 4790k @ 4.7GHz

RAM: 16GB @ 1600MHz

GPU: Asus Strix GTX 980

Primary Drive: Crucial 512GB SSD

Secondary Drive: 1TB RAID 1

 

 


#15 Rayvolution

Rayvolution
  • Developer
  • 1,890 posts
  • Pip
  • Steam ID:Rayvolution
  • LocationTexas

Posted 18 October 2014 - 10:27 PM

This being said, it will be very difficult to mod RPC because of the object implementation from what i've seen so far... At this point I really have no idea how we're going to even mod it to a basic extent.

 

Yep, RPC was never really designed with modding in mind to be honest. ;)

 

That's part of the reason for releasing the source, so people can play around with it some. You actually can "mod" it although getting multiple mods working together will probably be a bit of a mess. But the code is still young, it might get better in time.


  • 0
Rise to Ruins Developer

#16 cebarks

cebarks
  • Members
  • 26 posts
  • Pip
  • Skype:cebarks
  • Steam ID:cebarks
  • LocationDenver, Colorado

Posted 18 October 2014 - 11:40 PM

Yep, RPC was never really designed with modding in mind to be honest. ;)

 

That's part of the reason for releasing the source, so people can play around with it some. You actually can "mod" it although getting multiple mods working together will probably be a bit of a mess. But the code is still young, it might get better in time.

Yeah, just seems like you could have made it so much easier on yourself! The object management all mostly hard coded. >.< Still not sure how i'm gonna handle that. I have an idea though... Which may also help you if you want to know at some point :P

 

Edit: My idea totally worked! Check the news at top of original post.


  • 0

RetroPixelLoader! <------ Click me

 

------------------------------------------

Best way to contact me: anten@cebarks.net

------------------------------------------

 

OS: Microsoft Windows 7 Ultimate

Processor: Intel i7 4790k @ 4.7GHz

RAM: 16GB @ 1600MHz

GPU: Asus Strix GTX 980

Primary Drive: Crucial 512GB SSD

Secondary Drive: 1TB RAID 1

 

 


#17 Luka

Luka
  • Members
  • 506 posts
  • Pip
  • Steam ID:cheeselumps
  • LocationIreland.

Posted 20 October 2014 - 06:10 AM

 

I'm pretty sure he wants to release the source code *at some point* in the future, just to make some people's lives easier (i.e. ours). I'd love for official mod support to exist, and would also love to work on that mod support and give modders every last thing they need.

Dreams right there.  :)

 

 

 

This is by no means official mod support. Creating this does not require having access to the source code, so it is not dependent on what Ray decides to do. That being said if he prefers that we not continue on this project, I for one will respect his wishes.

I agree, i suppose.

 

Yes, I'll be releasing the source eventually. I just have to come up with a "For educational or modding purposes only, can't be used in conjunction with any other software other than Retro-Pixel Castles" license. Whatever that is. :)

Yay, Good to know, i love source code :3 it's so... editable.


  • 0

#18 KyoShinda

KyoShinda
  • Members
  • 449 posts
  • Pip

Posted 31 October 2014 - 04:08 PM

It would be pretty cool to mod because it can also work as a basis for suggestions. If you can already put something in the game, then you already know it works! lol


  • 0

#19 cebarks

cebarks
  • Members
  • 26 posts
  • Pip
  • Skype:cebarks
  • Steam ID:cebarks
  • LocationDenver, Colorado

Posted 01 November 2014 - 08:07 PM

It would be pretty cool to mod because it can also work as a basis for suggestions. If you can already put something in the game, then you already know it works! lol

 

Exactly! Yet another reason to support modding Ray  :P  ;)


  • 0

RetroPixelLoader! <------ Click me

 

------------------------------------------

Best way to contact me: anten@cebarks.net

------------------------------------------

 

OS: Microsoft Windows 7 Ultimate

Processor: Intel i7 4790k @ 4.7GHz

RAM: 16GB @ 1600MHz

GPU: Asus Strix GTX 980

Primary Drive: Crucial 512GB SSD

Secondary Drive: 1TB RAID 1

 

 


#20 cebarks

cebarks
  • Members
  • 26 posts
  • Pip
  • Skype:cebarks
  • Steam ID:cebarks
  • LocationDenver, Colorado

Posted 10 November 2014 - 02:33 AM

I got a lot of shizz done recently in the backend, go check out the Github page people! https://github.com/RetroPixelLoader


  • 0

RetroPixelLoader! <------ Click me

 

------------------------------------------

Best way to contact me: anten@cebarks.net

------------------------------------------

 

OS: Microsoft Windows 7 Ultimate

Processor: Intel i7 4790k @ 4.7GHz

RAM: 16GB @ 1600MHz

GPU: Asus Strix GTX 980

Primary Drive: Crucial 512GB SSD

Secondary Drive: 1TB RAID 1

 

 


#21 KyoShinda

KyoShinda
  • Members
  • 449 posts
  • Pip

Posted 10 November 2014 - 09:51 AM

You might have to make a tutorial on how to use it after you're done, I'm a noobie modder so..  lol


  • 0

#22 cebarks

cebarks
  • Members
  • 26 posts
  • Pip
  • Skype:cebarks
  • Steam ID:cebarks
  • LocationDenver, Colorado

Posted 11 November 2014 - 04:19 AM

You might have to make a tutorial on how to use it after you're done, I'm a noobie modder so..  lol

 

Probably end up doing that at some point.


  • 1

RetroPixelLoader! <------ Click me

 

------------------------------------------

Best way to contact me: anten@cebarks.net

------------------------------------------

 

OS: Microsoft Windows 7 Ultimate

Processor: Intel i7 4790k @ 4.7GHz

RAM: 16GB @ 1600MHz

GPU: Asus Strix GTX 980

Primary Drive: Crucial 512GB SSD

Secondary Drive: 1TB RAID 1

 

 


#23 emeegeemee

emeegeemee
  • Members
  • 9 posts
  • Pip

Posted 08 January 2015 - 01:28 AM

I was looking through the repo that cebarks had posted, but was having a hell of a time getting it setup and running on windows. So I created a gradle project that should be cross platform, though I'm not entirely sure, to work on modding the game.

 

https://github.com/E...mentEnvironment

 

Hopefully it is helpful to you guys.

Let me know if I can do anything to help out.


  • 0

#24 emeegeemee

emeegeemee
  • Members
  • 9 posts
  • Pip

Posted 10 January 2015 - 11:38 PM

Does anyone know Ray's stance on putting decompiled source code into public repos? I only want to put patch files and at least for now there isn't much information to use without having the game's Core.jar

 

https://github.com/E...emee/RPCPatches

https://github.com/E...12unstable3/rpc

 

Thanks


  • 0

#25 Rayvolution

Rayvolution
  • Developer
  • 1,890 posts
  • Pip
  • Steam ID:Rayvolution
  • LocationTexas

Posted 11 January 2015 - 12:05 AM

Does anyone know Ray's stance on putting decompiled source code into public repos? I only want to put patch files and at least for now there isn't much information to use without having the game's Core.jar

 

https://github.com/E...emee/RPCPatches

https://github.com/E...12unstable3/rpc

 

Thanks

 

Official answer: No. (only because I haven't written a license yet ;) )

 

Unofficial Answer: I don't really care what people do with the source code as long as it's not malicious, blatant theft to make your own software, is related to RPC somehow (Mods, patches, tweaks, etc), or you're just using it for personal use/educational purposes and are not distributing it.

 

In a nutshell: While the official answer is "no", I don't plan on enforcing that unless someone is doing something shady with it.


  • 0
Rise to Ruins Developer

#26 emeegeemee

emeegeemee
  • Members
  • 9 posts
  • Pip

Posted 11 January 2015 - 02:00 PM

Official answer: No. (only because I haven't written a license yet ;) )

 

Unofficial Answer: I don't really care what people do with the source code as long as it's not malicious, blatant theft to make your own software, is related to RPC somehow (Mods, patches, tweaks, etc), or you're just using it for personal use/educational purposes and are not distributing it.

 

In a nutshell: While the official answer is "no", I don't plan on enforcing that unless someone is doing something shady with it.

 

Thanks for the reply and as you stated, I plan on creating mods and learning, but if you ever see anything that you don't like I would be happy to remove it.


  • 0

#27 Rayvolution

Rayvolution
  • Developer
  • 1,890 posts
  • Pip
  • Steam ID:Rayvolution
  • LocationTexas

Posted 11 January 2015 - 02:26 PM

Thanks for the reply and as you stated, I plan on creating mods and learning, but if you ever see anything that you don't like I would be happy to remove it.

 

You should be fine, as long as you don't try to distribute something malicious I really don't care.

 

That's part of the reason the official answer remains "no" right now until I have a better put together official legal stance on it, that way no one can argue with me when I say "look, you can't do that!". Reality is chances are no one will do anything wrong by accident, anything you do that would force me to take action you'll *know* is wrong before you do it, like installing malware or ripping off the entire game's code and making a new product out of it. ;)

 

I guess you can look at it like Minecraft and how Mojang handles modding, Minecraft actually follows a similar philosophy. Technically modding (and distributing those mods) isn't allowed. But Mojang simply just doesn't do anything about it because, well, who cares?


  • 0
Rise to Ruins Developer

#28 cebarks

cebarks
  • Members
  • 26 posts
  • Pip
  • Skype:cebarks
  • Steam ID:cebarks
  • LocationDenver, Colorado

Posted 11 January 2015 - 11:01 PM

I was looking through the repo that cebarks had posted, but was having a hell of a time getting it setup and running on windows. So I created a gradle project that should be cross platform, though I'm not entirely sure, to work on modding the game.

 

https://github.com/E...mentEnvironment

 

Hopefully it is helpful to you guys.

Let me know if I can do anything to help out.

Right now the way i'm adding hooks is through patching the game at decompile and stuff. I haven't used gradle a whole lot but I had been thinking about rewriting all my tools in gradle to make it cross platform, since at this point its only unix/osx compatible. If you'd be willing to, I'd absolutely be incredibly grateful for any help you could provide when it comes to that. Especially since now that school has started up again (i'm in high school if anyone didn't know), I won't/haven't had much (or any for that matter) time to work on this.

 

EDIT: To clarify on the rewriting the toolkit kind of stuff, I was thinking either rewriting it in gradle (as i mentioned above), python, or implementing everything in a java program.


  • 0

RetroPixelLoader! <------ Click me

 

------------------------------------------

Best way to contact me: anten@cebarks.net

------------------------------------------

 

OS: Microsoft Windows 7 Ultimate

Processor: Intel i7 4790k @ 4.7GHz

RAM: 16GB @ 1600MHz

GPU: Asus Strix GTX 980

Primary Drive: Crucial 512GB SSD

Secondary Drive: 1TB RAID 1

 

 


#29 cebarks

cebarks
  • Members
  • 26 posts
  • Pip
  • Skype:cebarks
  • Steam ID:cebarks
  • LocationDenver, Colorado

Posted 11 January 2015 - 11:04 PM

Does anyone know Ray's stance on putting decompiled source code into public repos? I only want to put patch files and at least for now there isn't much information to use without having the game's Core.jar

 

https://github.com/E...emee/RPCPatches

https://github.com/E...12unstable3/rpc

 

Thanks

What are you using to generate patches? All i see is a bunch of hex in those files...


  • 0

RetroPixelLoader! <------ Click me

 

------------------------------------------

Best way to contact me: anten@cebarks.net

------------------------------------------

 

OS: Microsoft Windows 7 Ultimate

Processor: Intel i7 4790k @ 4.7GHz

RAM: 16GB @ 1600MHz

GPU: Asus Strix GTX 980

Primary Drive: Crucial 512GB SSD

Secondary Drive: 1TB RAID 1

 

 


#30 emeegeemee

emeegeemee
  • Members
  • 9 posts
  • Pip

Posted 11 January 2015 - 11:09 PM

What are you using to generate patches? All i see is a bunch of hex in those files...

 

Originally I was using gdiff which was semi-human readable but was having trouble so I switched over to using vcdiff which as you saw isn't readable but has better compression. The library I'm using is found here: https://github.com/xiaxiaocao/jvcdiff


  • 0





Also tagged with one or more of these keywords: modding, wip

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users