Mopar Weekly (#4)

[size=24pt]News (for the week 22/06/2015)[/size]

[size=18pt]RS Wiki Rework[/size]
The recent work on the Wiki hasn’t been finalised yet, so please be patient while we sort it all out!

[hr]

[size=18pt]Game Development[/size]

It seems that recently our game development board has taken off quite a bit, hosting projects such as Blackwake and Codename::World.
This week was no exception to the recent trend of activity!

[size=14pt]Da Magic Schoolbus (by Tree)[/size]
Tree recently made a small game demo to mess around with C and OpenGL. He gave us a screenshot to highlight his accomplishment, make sure you check it out and say rude things about him :wink:

[size=14pt]Shard Master 3D (by Limits)[/size]
Another member who has been messing with the RuneScape Classic client recently is Limits. He has managed to create a game kind of based on RSC (the general consensus) which is still in development.
He is making rapid progress on it so I would advise you all to bookmark his thread! He now also has a link to a demo in his thread.

[hr]

[size=18pt]Senior Member Feature - sinisoul[/size]
This week we have managed to get a hold of sinisoul - the co-developer of the official server. We have tons of server updates within this member feature!

The “before” MoparScape?
I joined Moparscape about 5 years, before Moparscape I honestly wasn’t into programming. I touched on Alice (a 3D Java game environment) a bit. But beyond that I had no programming knowledge.
I was just a kid coming out of middle school, for those of you who don’t live in the US I was about 13 at the time. I played sports, particularly Hockey and was just aspiring to be an engineer. I didn’t get involved with Moparscape/MITB until I played a server and thought “Wow I really want to make one too!”.

How did you find MoparScape/MITB and what were the first things you did on here?
I actually didn’t get very involved in Moparscape until The Wanderer, a friend of mine, and I were shooting crap about how it was better than r-l. I decided to branch out and joined!
I was involved with the r-l community for the first 3 years of my time in the RSPS scene. Moparscape drew me in because it’s a more niche community. It has a lot of interesting characters and of course it’s the birthplace of modern RS emulation/botting.

You mentioned you spent a lot of time on r-l, what kind of stuff did you do there? Anything interesting?
On r-l no, I don’t think I did anything worth mentioning. I spent my first 4 years getting a good grasp on Java and a lot of the projects I did fell into obscurity.
But then I found a passion for developing bases and I spent a lot of time trying to be innovative. A lot of it felt like wasted time, but I learned a lot about designing server applications and applications in general.
I left r-l about two years ago because of some turmoil I had with Ikiliki. As much as I wanted to help the community he prioritised his top-list and would neglect the forums. He banned me, and a few others whom I’d consider knowledgeable members.
I’m still banned there - to this day! I guess that’s why I never go back even though I had a lot of friends and good memories there. So all in all the politics turned me off. I much prefer the way the administration at Mopar handles their behavioral expectations and runs the community.

What are you known for in Moparscape now?
WELL. I am the curator of the original Moparscape server source. I guess that’s something. People more or less associate my name with “failed projects” and “can’t finish a project”. Well hell, I can’t disagree! My span of knowledge about emulation however is vast. I think in the recent year I’ve nailed down some very efficient emulation strategies. All topped off with my work on deciphering the the client to support these ideas. Shoutout to the Jmods who post Runescript! A lot of that information is very valuable to understanding a working approach to how you should write content. Which I consider the what you should invest most of your development time in.
Back when we were in a tad bit of infancy I wrote plenty of articles detailing some protocols and file structures that are still on the Wiki today. I think only a few people can rival or come close to the amount of RS client hacking experience I have. Those being of course Veer (super), Method, Speljohan and MITB. All whom I respect greatly and thank for their help with filling in blanks I couldn’t figure out on my client hacking adventures.
All of my “failures” actually re-appear in projects, however the priority of which shift constantly and as my interests change. I understand a point where I need to throw in the towel and reapproach a project from a different angle which I think is where people draw that conclusion. In the new server base you will be seeing an accumulation of my past projects this last few years (content system, system oriented design, scripting).

What news can you tell us about the new server? David is working on a distinct server too and what about your current progress?
That is a long story and history which I’m sure a lot of people may have followed, however if you didn’t it boils down to this: I was approached a few years back to use my ScapeEmulator derivative for the official server. I told David from the get go that I had rushed plenty of features and didn’t expect it to be of the quality I’d expect an official server to be. He put a ton of work into it though and I’m very happy he did! We had an alpha which was a success and from there interest sort of tapered off.
I wanted this project to be a revival of Moparscape as a whole, and I had a certain idea of how we’d get there. I wanted for the source to be an example of a well designed platform that people could use generally and my derivative didn’t provide that. I was given the chance to revisit and redesign everything, and I’m currently doing that.
The current source is usable, but no one except David is working on it. I have a new design in place. I’m currently hammering out the kinks to make sure people can develop for it efficiently.

So, you were caught on the forum talking about your implementation of protobufs, how will this affect the server you are currently designing?
I’ve been eyeing protobuf for quite some time, and I think it’s important to mention I’ve also been eyeing gRPC (Google RPC framework) which uses protobuf to encode and decode messages over HTTP.
I was toying with this in my recent design because I wanted to separate the role of responsibility for services which to give some background any Runescape emulation platform must feature nuances of the updating, game, and login services . However it doesn’t have to specifically be designed to be a service container. The result in a service-oriented design and a PI server is the same except obviously a service-oriented design is easier to manage and develop as a whole. I’m sure most of you have experience those growing pains! At least once or twice.
Apollo is the best example of a base that first tried to organize specific server responsibilities by their services and services client sessions based upon indicated interest. It paved the way for this new way of thinking I foster today, however this current design for the official server was aimed at creating separate applications for each service. That’s not a bad practice but recently I took a new direction and instead worked on a service-oriented framework where the communication layer could be dictated by an internal application or communicating over sockets, even both if you needed to.
I may implement gRPC to wrap services, however it’s still up in the air. I’m more worried about getting the gears in motion so people can develop content, login, save player profiles, and obviously connect to the server before I even worry about that but that may be included in the process somewhere in between. It just depends on what I logically find fit to support.

You were messing around with the bootstrapping for scripting a little earlier, care to elaborate on how that system will work?
With this design I’ve drawn a lot of inspiration from NodeJS and Redis. However of course both are not applicable in a 1:1 abstraction for a server. For all services, you submit requests with a callback. After the request is a process which updates the internal state of the service (for applicable status conditions) you receive a response and further process it to chain together various requests to complete goals. Currently the game service has a Lua script environment which people are expected, not encouraged to use.
I may hear a few groans for that but there is a reason. Frankly the Lua environment just wraps the service and has built in helpers to make your coding more efficient. Currently (at this very moment) I’m working on bootstrapping scripts and binding required data to the service in order to handle action callbacks and other data.
The scripting system as a whole supports a few service requests, one to evaluate a script, one to load a script, and one to call a script by its namespace which you pass as an argument when you load a script into memory. With these you can do a variety of tasks remotely, or at least that’s the hope. It’s just a way to give people more control, and hopefully implement the functionality they require for their emulation implementation.

So enough of that boring stuff, how are you? How is your personal life going, are you in uni? etc
Yep. I’m at university right now heading into my 2nd year. I’m a computer science major, duh. I am just enjoying the summer with my girlfriend and family.
As much as I want to spend my time outside, I spend about 3-6 hours a day designing and working on the Moparscape server source. I really want to see it done you know! Like I just want that one project I can sit back and look in awe at and think, wow this is an accumulation of everything you’ve done in the past 5 years. I think once we get everything up and running we’d see a surge in activity. Maybe not actual development, but new people joining and it’d give us a new initiative to actually be active for. It’s exciting, but its a long road and everyday its one step after the next.
I think about quitting RSPS as a whole all the time but I want something to be remembered by and I think this may be the ticket. But who knows, it may flop. But at least I gained the experience I did along the way you know? I’m doing this for the community and I hope once it comes out everyone in the community has a chance to enjoy it. I have a lot of pride in being a member of Mopar, it’s been a fun ride and if I didn’t have Mopar I probably wouldn’t be in the place in my life I am now. So I am very grateful, to MITB, the admins, and everyone who has helped teach me what they could.

To wrap this session up - What is your advice to newcomers, particularly those who want to learn how to code?
My advice to anyone wanting to learn how to program is to be humble and don’t be afraid to ask for help. Learning to program is a long process regardless of choice of language. You have to keep an open mind and don’t get discouraged if it gets tough.
If you get frustrated step back and come back later. It’ll always be there for you to pick up again. If you want to get to the best of your ability, set your goals high and don’t be afraid to fail.
Start with Java, Ruby, or Python and have fun! Don’t do boring dribble, make a program that prints out cat facts or a client that receives cat facts from a server.
Also if Pure is giving you programming advice, chance is its BAD programming advice. :wink: .

it’s interesting how sini manages to make something i enjoy reading far too long to bare.

gj again pure

[quote=“Pure_, post:1, topic:552145”][size=18pt]RS Wiki Rework[/size]
The recent work on the Wiki hasn’t been finalised yet, so please be patient while we sort it all out![/quote]In regards to this, as I felt unnecessary to create a separate topic therefor, I would like to suggest a syntax highlighter for the Wiki. When browsing through it, I noticed that syntax is not highlighted, yet Mopar itself has a wonderful highlighter. For example, in the 317 login protocol, you’ll find this code:

long encodedUsername = TextUtils.encodeAsBase37Integer(username);
int usernameHash = (int) (encodedUsername >> 16 & 31L);
out.offset = 0;
out.writeByte(14); // Initiate connection type
out.writeByte(usernameHash);
in.queueBytes(2, out.payload);
for (int j = 0; j 

(which, by the way, would be unable to compile) and it looks absolutely hideous being unaccented.

[quote=“EcoPS GM, post:3, topic:552145”][quote author=Pure_ link=topic=671061.msg4487495#msg4487495 date=1435168868]
[size=18pt]RS Wiki Rework[/size]
The recent work on the Wiki hasn’t been finalised yet, so please be patient while we sort it all out!
[/quote]In regards to this, as I felt unnecessary to create a separate topic therefor, I would like to suggest a syntax highlighter for the Wiki. When browsing through it, I noticed that syntax is not highlighted, yet Mopar itself has a wonderful highlighter. For example, in the 317 login protocol, you’ll find this code:

long encodedUsername = TextUtils.encodeAsBase37Integer(username);
int usernameHash = (int) (encodedUsername >> 16 & 31L);
out.offset = 0;
out.writeByte(14); // Initiate connection type
out.writeByte(usernameHash);
in.queueBytes(2, out.payload);
for (int j = 0; j 

(which, by the way, would be unable to compile) and it looks absolutely hideous being unaccented.[/quote]Thank you for your comment, we’re still trying to figure it out so bare with us while I notify the administrator regarding this issue. The latter part of half the code missing is an issue to do with the parser MITB wrote which is out of my hands as of now, sorry.

No worries, no rush. I’m just reporting a little thing that would be beneficial towards the Wiki whilst it’s still being meddled with.

maybe 1 day blackwek will be in weekly

[quote=“Pure_, post:4, topic:552145”][quote author=EcoPS GM link=topic=671061.msg4487536#msg4487536 date=1435186133]

[quote author=Pure_ link=topic=671061.msg4487495#msg4487495 date=1435168868]
[size=18pt]RS Wiki Rework[/size]
The recent work on the Wiki hasn’t been finalised yet, so please be patient while we sort it all out!
[/quote]In regards to this, as I felt unnecessary to create a separate topic therefor, I would like to suggest a syntax highlighter for the Wiki. When browsing through it, I noticed that syntax is not highlighted, yet Mopar itself has a wonderful highlighter. For example, in the 317 login protocol, you’ll find this code:

long encodedUsername = TextUtils.encodeAsBase37Integer(username);
int usernameHash = (int) (encodedUsername >> 16 & 31L);
out.offset = 0;
out.writeByte(14); // Initiate connection type
out.writeByte(usernameHash);
in.queueBytes(2, out.payload);
for (int j = 0; j 

(which, by the way, would be unable to compile) and it looks absolutely hideous being unaccented.
[/quote]Thank you for your comment, we’re still trying to figure it out so bare with us while I notify the administrator regarding this issue. The latter part of half the code missing is an issue to do with the parser MITB wrote which is out of my hands as of now, sorry.[/quote]

Good thing we switched!

[quote=“Frell, post:6, topic:552145”]maybe 1 day blackwek will be in weekly[/quote]2 old tho

I’m actually kind of glad I am seeing something weekly like this on here. Keep up the great work.

These are some great projects mate

I like these.

ok

This is the kind of stuff we need - a lot, thanks for doing it. Fantastic work!

Thanks for including me in there but I didn’t make that from the RSC client :stuck_out_tongue: