Makin' Mah Mmo


sindbad said:
I think you should leave it resolution independent and, if after profiling it's too slow, do the scaling trick. You may very well not need to optimize it any further and you might want to port it to desktop OSes, which need variable resolution.
Well the primary reason for upscaling isn't for performance reasons, though that is an added bonus. Primarily it's because doing art content for a game takes ages, and downsizing means I will be four times faster at actually creating the art, which means what would normally take me a year would only take me three months.

And when you start doing smaller art scaling it up also becomes vital just so people don't have to squint to make out their character.
 
Last edited by a moderator:
I think with either the first or last scaling technique (you could give an option to the player for which scaling technique they want) it looks pretty decent.
 
Eniko said:
Thanks sindbad, I'll look into the alternatives. You've been a great help so far. :)

Now then, I have a question for the potential players of this game, whether it be on the Pandora or other systems: what would you think of the game being in 400x240 resolution, and scaled up to 800x480? I have the necessary experience required to create scaling algorithms, either through pixel shaders or C extensions, so it won't be crappy nearest neighbour or bilinear quality unless you like that sort of thing. (might need help if anyone wants me to implement hqnx though :p The code isn't even commented and optimized to all hell)

There's a few pros to this:
  1. Easier to code. Upscaling a smaller screen will easily outperform using the larger resolution, which means I have less evil optimizing to do, which means I can focus more on getting things done.
  2. Halving the resolution will greatly speed up my productivity. Not only do I have a lot more art assets for that resolution than 800x480, halving the resolution means for pixel art I only have a quarter of the work per asset to do. This will help me get things done more easily.
  3. Portability. I'm not sure if this will be a big factor, but I'm putting it here either way. I believe for instance it might be able to be ported to PSP, though I only glanced at Python/Pygame on PSP at best so I don't know details. 400x240 resolution means it would fit on the PSP's screen, although whether the effort gets far enough for this to be workable remains to be seen.
  4. Full screen post processing. Because the game will run a lot faster there's a lot of idle time that I could use for postprocessing tricks to make things look all pretty. I realize a lot of people couldn't care less about this, but as someone with a heavy focus in graphics programming I find this to be almost the most fun part of the whole process.
Of course, the drawback is the low resolutioness. Not even a good scaler can offset that entirely. On the other hand, some people might associate this with a retro kind of feel and appreciate it.

To give you an idea of what you might be looking at, I took an old mockup and scaled it up in a few ways: unscaled, nearest neighbour, bilinear, scale2x, and my personal favourite scale2x/bilinear blend

So, does anyone have a strong opinion on this either way?



I would much rather have the higher Res option. However, I would probably still like it even if you did choose the lower Res.

-God Ginrai
 
Last edited by a moderator:
I just want to say that this looks awsome! TX for all the hard work.

as for your question i like the scale2x option. I like the sharpness. it shows off the artwork much more.
If you are looking for a bluring effect I hope it gets done in a transparencey that can be toggled on and off.

anyways, Great Project! can't wait to load it on my Pandora!
Keep up the good work!
 
/copydir said:
I just want to say that this looks awsome! TX for all the hard work.

as for your question i like the scale2x option. I like the sharpness. it shows off the artwork much more.
If you are looking for a bluring effect I hope it gets done in a transparencey that can be toggled on and off.

anyways, Great Project! can't wait to load it on my Pandora!
Keep up the good work!
Just to clarify, all options will be available to the user, and probably more. That was just a sample of what it might look like should I decide to go with the lower resolution that gets scaled up.

After thinking about it some more though, I've basically already concluded I should go with the lower resolution. My aim was to get something that would be finished and playable, and giving myself four times the artistic workload just doesn't seem to fit into that paradigm.
 
Last edited by a moderator:
Eniko said:
Well, I'm about to ditch Pyglet unless anyone here can advise me on what I'm doing wrong. For some reason whenever I try to render using Pyglet my framerates drop drastically and I'm hardly on an old machine. Right now with as many optimizations as I could find on the net I'm still getting only tops 40 FPS with Pyglet.
Have you tried profiling? Python has profiling included with the profile module.
 
Last edited by a moderator:
Small update. Working on the server now and Twisted, once I wrapped my head around a few basic concepts, actually isn't all that hard to work with. Most of the stuff it does is complete and utter overkill for my needs, and just plugging in the basics has gotten my network architecture all up and running with zero effort.

So I'm finally starting to see why people like it so much.
 
I swear doing visibility checking for the server is driving me insane. Nothing I do seems to work quite right during stress testing, and I'm starting to arrive at my wits end here.

If anyone has some good suggestions, I'm totally open to those. Grargh, I loathe this part with the fiery hatred of a thousand burning suns.

/vent

EDIT: Figures the minute I start finally swearing at my code is when I actually get it fixed. Oh well, yay for progress!
 
Eniko said:
Not really sure how far I'll take this. Depends on both my motivation and if anyone is even remotely interested in a rather basic hack and slash type MMO for the Pandora.
a simpel hack and slay MMO would be great running around get items
 
Last edited by a moderator:
I'm all about crisp low res. In fact i never use bilinear nor hq2x because it ruins the look of the original images. I play my GBA ROMs at x3 and they look great.

Pixel art's about accuracy, ne?

Also that screenshot you used reminds me Chrono Trigger. <3~
 
Eniko said:
EDIT: Figures the minute I start finally swearing at my code is when I actually get it fixed. Oh well, yay for progress!
Happens to me all the time. ;)

-God Ginrai
 
Last edited by a moderator:
Coding & starting an old car have that in common, Eniko. I find if I haven't cursed and lost my temper at code more complicated than a script - it is bound to fail when I least expect it. Four letter words are the "prayers" we code-monkeys say over our projects to invoke the blessing of the Binary Gods :D
 
Having played games that apply scale2x to each sprite individually (Kobo Deluxe) and games that apply scale2x to the whole screen (ZSNES), I would like to say I prefer the former. Of course, it's up to you, but maybe you could post a screen shot each way and see what people think.

Also, if it's isometric, how will the controls work? Which way will "down" on the D-pad make you go? SW or SE? I just ask because I used to play NexusTK but have never played an isometric RPG.
 
iain.dalton said:
Having played games that apply scale2x to each sprite individually (Kobo Deluxe) and games that apply scale2x to the whole screen (ZSNES), I would like to say I prefer the former. Of course, it's up to you, but maybe you could post a screen shot each way and see what people think.

Also, if it's isometric, how will the controls work? Which way will "down" on the D-pad make you go? SW or SE? I just ask because I used to play NexusTK but have never played an isometric RPG.
Well Dark Ages was built using NexusTK's engine. There the down key travels you upwards along the map's Y axis (down-left visually on screen), right upwards along the X axis (down-right visually on screen), etcetera. That will probably be the type of functionality used in my game.

A less confusing way to move would be to use one of the sticks, so that down-left makes you travel upwards along the Y axis, just like you'd expect. Plus there will probably be stylus based pathfinding, where you simply tap the screen and start moving to that location automagically.

On applying scale2x to each sprite individually, I really don't see that happening. Definitely not applying it during run-time as sprites are being drawn to the screen, which means I'd have to do it during load-time and load the scaled bitmaps into memory. It's just very, very messy when compared to simply tacking on a full screen postprocessor, which is a relatively uninvolved and simple job.

Not to mention running scale2x on isometric tiles could cause all sorts of wacky seam issues.
 
Last edited by a moderator:
Small update to let everyone know that yes, I am still working on this. I finished movement on the server, and have implemented a binary protocol for both client and server and they can now talk to each other, in other words the server can tell the client what it's seeing and what's moving around.

And an obligatory YouTube video for illustration. Doesn't look like much but it means I've passed some pretty difficult developmental hurdles.

Plans for the future include rewriting the engine to be OpenGL ES compliant. I believe that means using 2.0, but I'm not completely sure. This will have to wait til I have an actual Pandora, anyway. I also want to create a system on client and server that lets privileged clients (ones with a special module and privs on the server) change maps online in real time. This means maps can be altered without clients having to download patches, and it means several people can work on creating new maps online in real time.

Gameplay details are starting to form too, I'll elaborate a little on that too.

The game will likely have both a base level and a class level. You can freely change classes at any time - a la Phantasy Star Universe - and the level you were on is remembered. Classes modify your stats and give you access to certain skills. Additionally once you've maxed out a class' level you've mastered that class and are allowed to use some of the mastered class' skills while you're a different class. E.g. a master gunner could switch to a priest class and become a gun toting priest.

There will be guilds and groups. Guilds will be hard to start, taking a large number of prospective members, resources, and possibly GM approval before they can be started. Guilds will have dedicated guild banking space, probably guild halls, and that sort of thing. Multiple guilds can engage in an alliance, and guilds and alliances can declare wars on each other which will allow members to engage in PVP. You can only be part of one guild at a time.

Aside from guilds there will be groups, which will be easy to start for anyone, and anyone can join any number of groups, regardless of whether they're already in a guild or not. This way you can have a group of your real life mates, a group for a bunch of non guildmates you just like partying with, and stuff like that. Think FFXI linkshells but less exclusive.

Currently I'm pondering if it'd be possible somehow to use an IRCd for a portion or all of non-local chat. Might be more trouble than it's worth, but if I can pull it off it's something I'd like to do because players like to stay in touch with a game's community even if they're not currently playing but because MMOs don't usually support this kind of thing you get a lot of ill-used IRC rooms spread over too many different networks.

Uhh... well, that's all from me for now. Feel free to air thoughts and give suggestions! :blink:
 
Last edited by a moderator:
Eniko said:
enigmacipher said:
How are the graphics done? They look like they are definitely pixel art, but I know someone else interested in making an mmo said it would be best to use vector. Need any helps w/ graphics? I would be happy to make some pixel or vector art.

@PoisonedV
why are you suddenly so nice?
Why didn't you noticed that his "proof" could just be photoshopped?


It's pixel art, largely done by myself. You might notice that I disagreed with the particular point of view that pixel art is somehow obsolete. Plus I'm a good pixel artist, so I'm gonna stick to my strengths. I can always implement a decent scaling algorithm for PC for those running at ridiculous resolutions.

I'm a girl, by the way. :D

On another note, currently working on putting an abstraction layer between my client and Pygame/Pyglet so I can ideally allow the user to use whichever. Considering I've heard from some others that they're unsure which to use I'm wondering if there's any interest in me eventually releasing the abstraction modules?

I can't promise it'll be very good code, or even very useful to anyone but me, after all I'm an amateur, not some highly educated software designer. But hey, if there's interest, I'll see what I can do to keep it tidy enough for an eventual public release.


Your game looks very interesting. I'm glad to see there are people working on games other then emulators for a change.
 
Last edited by a moderator:
Eniko said:
Currently I'm pondering if it'd be possible somehow to use an IRCd for a portion or all of non-local chat. Might be more trouble than it's worth, but if I can pull it off it's something I'd like to do because players like to stay in touch with a game's community even if they're not currently playing but because MMOs don't usually support this kind of thing you get a lot of ill-used IRC rooms spread over too many different networks.
You could make your game client behave like a chat client (irc or jabber) and just connect your server. This way, external clients will work just fine. Twisted will help with that, since you're already using it.
 
Last edited by a moderator:
I like the IRCd idea. But, unless you are planning on setting up your own IRC server, then I'd suggest trying to talk Craigix and Co. into hosting an IRC server, that way you would tend to have less trouble with idiots from other channels. Also, if you do set up your own IRCd, I'd suggest Unreal IRCd. Back when I was an IRCop, it was a nice setup.

-God Ginrai
 
Making the server/client relation priority definately shows your team knows what theyre doing, youll be tweaking netcode the whole process, forwarning.
 
Back
Top