new client

Started by stormcrow, July 14, 2013, 10:21:12 PM

Previous topic - Next topic

0 Members and 4 Guests are viewing this topic.

I am working on learning java, and the best way for me to learn how to program is to do a project and learn around that.  Megamud has been the only real client to use for a long time, and it can be difficult for people to get that installed (keyjen and such).  I am planning on making a replacement for it.  I know that other people have started projects and then never finished it, but I hope to complete mine.  It will be open sourced so that people can pick it up if I fall off of it, but I doubt that would happen.  I am a semi disabled stay at home dad, and have a huge amount of time to work on this.  Once I get really started, I will start posting in the 3rd party forum, if that is the right place.

So, any advice on things I should watch out for?  Also, can I make a 2nd character to test out a lot of the intro functions for each class?  It will only be used for this purpose, and can be called clienttest or whatever if needed.

As far as naming the program, I figure we can vote on it, but for now it will just be Greatermud Client or something like that.

I will say first and foremost, good luck and thanks for picking up the project.  I think Java is a great choice due to it's portability.

Having said that, you sure picked one hell of an undertaking as your first Java project.

I would suggest you start in non pvp first and work your way into pvp.  I'll allow an extra character for you to test with, just stay in touch with me re: player name and such.

Sounds good.  I know c++ backwards and forwards, so I am hoping that I can get the java syntax down pretty quick.  My plan is to having something that I can log in with within the week.  After that, I will setup a priority list of what needs to be done (combat rounds, magic, scripting, etc).  I plan on it being able to find itself instantly with the pro command, and I plan to tweak it as greatermud expands.

I'm also interested in learning some Java, but I don't have anywhere near enough time for a full scale project like this.  Best of luck and keep posting throughout the process.  I would be interested in pitching in if possible.  I'm a better system designer than I am a programmer, but I can code a bit / beta test / etc.

Sure thing.  It will be completely open source and I have an open mind about contributions and ideas.  I plan to have a weekly update thread about the progress and such, and plan to also ask for help there (more about syntax than needing coders, but coders are always welcome).

I have some large ideas after it is working to expand it.. things like being able to semi control it from android or something.  Like being able to change the script, or go train or something.  I remember writing a script with some random client back in the day that would output the exp/hr to a txt file and then a ! command in mirc would report it.  Silly things like that.  In order to get my head wrapped around it better, I am following a Tower Defense creation tutorial for the next day or 2.  As I go through it, I am working on getting the basics in on the client (now called gmclient for short)... creating the window, etc.

This is the tutorial I am going through.. note he has some really odd practices, but I am learning enough around the weird stuff:

http://www.youtube.com/watch?v=_7dU6-L0Dps

Since you're doing open source, I suggest either GitHub or BitBucket, and obviously git as the version control system.  That'll make it much easier for people to contribute, discuss, fork, and use the awesome pull request feature that those services have--which helps TONS with good code review practices.  If you use svn or something else, you're likely to be alone on this project.

I second the Github recommendation.

FYI though, depending on what's more important to you between learning Java and actually shipping something I thought I'd make you aware that there's a very solid multi-platform open sourced mud client in C++ called mudlet that might work as a starting point since you know C++ well already.

http://www.mudlet.org/

Shaitan

It is a mix of both, so I do plan on sticking with Java for this.  I will definitely go with Githhub.

Why Java and not say C# where you have better generics and much much easier data access with entity framework, LINQ and lambdas.. not to mention VS.

Quote from: Vile on July 16, 2013, 11:29:21 PM
Why Java and not say C# where you have better generics and much much easier data access with entity framework, LINQ and lambdas.. not to mention VS.

.NET has like no open source community and Windows sucks for everything but gaming.

Quote from: Shaitan on July 17, 2013, 02:13:12 PM
.NET has like no open source community and Windows sucks for everything but gaming.

Sourceforge.net is a widely used OS community for .NET projects and while you say Windows sucks for everything but gaming, isn't this a game? :)

Quote from: Shaitan on July 17, 2013, 02:13:12 PM
.NET has like no open source community and Windows sucks for everything but gaming.

Heard of CodePlex? VS natively supports Git now too.

Gaming? .NET is massive in the enterprise. Pretty sure gmud is written in .NET too.

I'm writing a client too, though it's written in Python using wxPython for the windowing.

As for choice of languages, Java is a much better choice IMO than C# because it's cross platform.   For those of us who use several different platforms, that is huge.

Python too is cross platform.  I choose Python because it's my primary language as a systems engineer and the fact that it cuts development time down by a huge margin.  Much more productive language to get things done in.  It's not always the right tool for the job, but for a mud client it easily fits the bill.  Java is a good choice too.

As for my client, it's my 3rd project I'm working on and am in no hurry to complete it.  It's still kind of in the design phase.

For those that have worked on this.  What choice did you use for the terminal screen?  Initially, as a draft I created the first mock up using a multi-line text control for the terminal.  That works fine, but resizing the window doesn't resize the text and keep the columns the same.  While I can make that happen, I'm thinking a custom control might be a better route.  Especially since I don't want users to put the cursor anywhere on the screen even if I make those areas editable.

July 19, 2013, 08:51:36 PM #13 Last Edit: July 19, 2013, 08:53:52 PM by Vitoc
Quote from: Shaitan on July 17, 2013, 02:13:12 PM
.NET has like no open source community and Windows sucks for everything but gaming.
There are tons of open source .NET projects out there.  In addition to gaming, Windows works great at the enterprise and workstation level.

Also worth noting, Xamarin now makes C# development possible for iOS, Android, Mac, and Windows, with a remarkably high code re-use rate.

If you're going to hate, at least get your facts straight. ;)

As for things to watch out for, everything.  I sat down to write the next MegaMUD before I wrote GreaterMUD.  I got terminal emulation working and parsing the statline properly, and then realized it would be easier to just re-write MajorMUD from scratch than it would be to re-write MegaMUD.  I say that only half-jokingly.


TGS v1.0 (coming soon)

Quote from: Frag on July 19, 2013, 08:07:16 AM
I'm writing a client too, though it's written in Python using wxPython for the windowing.

As for choice of languages, Java is a much better choice IMO than C# because it's cross platform.   For those of us who use several different platforms, that is huge.

Python too is cross platform.  I choose Python because it's my primary language as a systems engineer and the fact that it cuts development time down by a huge margin.  Much more productive language to get things done in.  It's not always the right tool for the job, but for a mud client it easily fits the bill.  Java is a good choice too.

As for my client, it's my 3rd project I'm working on and am in no hurry to complete it.  It's still kind of in the design phase.

For those that have worked on this.  What choice did you use for the terminal screen?  Initially, as a draft I created the first mock up using a multi-line text control for the terminal.  That works fine, but resizing the window doesn't resize the text and keep the columns the same.  While I can make that happen, I'm thinking a custom control might be a better route.  Especially since I don't want users to put the cursor anywhere on the screen even if I make those areas editable.
Xamarin makes C# cross platform.

Check it out.  The company I work for is an early adopter (we do iOS and Android development on it).  It's pretty slick.
http://xamarin.com/


TGS v1.0 (coming soon)