Eniko
Raving Python fangirl
So! Apparently you guys have a long memory since people remember me and the MMO I was working on. I figured since there's still an interest in this, I'd make a thread both to update you guys on what's what and also to ask for advice on a few things in preparation of my Pandora arriving (I should be in the first 170 according to a post I found).
First off, I'm giving serious thought to nuking the client and redoing it. It's a kludge which - unlike the server - doesn't follow proper coding conventions aside from the GUI library I made. It has residual stuff left over from when I was still using SDL and Pyglet which makes me wince, and really it's just a thin map displaying layer for interacting with the server. Again, the only really important thing here is the GUI library, which I can keep anyway in a recode.
Benefits of nuking the client are various. First off, to get around the security issues, I'd probably start off doing Python code that can be compiled using Cython. I'm sure it could be decompiled, but this is a layer of security I'm comfortable with; pure Python or even obfuscated Python code is not. It'd also make the client much faster and more lightweight, which is probably a good thing for the actual Pandora.
Second it allows me to revise my plans for a 2D game and make it 3D with retro styling. Viability is up in the air but I'll come back to that later. Plans are to create a top-down view 3D world along the lines of Ragnarok Online, except with cell shaded and outlined, normal mapped 3D characters and enemies. I'd do my best to add some pixel shadery goodness to get that delicious retro styling we all love, so that shouldn't necessarily be a concern.
One practical reason for a switch to 3D is simple workload. It takes a lot of time to animate pixel art. More time than it does to rig and weight a 3D model. And once you have say, the human characters bones animated, you can rig them to anything and hey presto, your work's done. With 2D you have to reanimate every item in the game by hand, which stays a lot of work and the thought of adding in extra animations later in development quite frankly horrifies me in terms of workload. It's just no good.
Another is that I've been programming 2D graphics for a long long time and I'm pretty bored of them. Back when I started PanMMO I didn't really know anything about 3D graphics, but I've since brushed up on it using XNA. I know enough to write my own shaders now and get a game off the ground. It also keeps working on the client's graphics fresh for me since I've been coding 2D graphics forever and I can pretty much do it in my sleep now, but 3D graphics is new, challenging, and interesting.
It also gives me a chance to work on my sorely neglected 3D modelling skills.
Stuff I don't know about; what the Pandora/OpenGL ES can do 3D wise. Can it basically do anything a desktop can do, just...a bit more slowly? Should I hold my breath for normal mapping which would be a great improvement to cell shading quality, or should I be complacent with per-pixel-lighting? How does texture memory work, is it just the device's general RAM? Will I need vertex buffer objects? Where are those kept if I do? If it's all in shared memory space, is there any improvement using VBOs over simply "uploading" everything to "the graphics card" every frame? Can the Pandora render-to-surface? Are pixel/fragment shaders going to be blazing fast like they are on desktops, or am I going to have to spend tons of time optimizing those to make everything run at proper speeds?
I'm also unsure of what 3D library I want to use, having no experience with any of them, just XNA. Ogre has Python bindings, but I have no idea if PyOgre is going to be workable on the Pandora. Working with Ogre or Irrlicht is possible, what with using Cython, but I have no idea how user friendly that'd be. Then again, working with OpenGL from Python wasn't that user friendly to begin with, really. And beyond a cursory knowledge of those two I have no idea about any other engines. Suggestions in this area are very welcome.
Furthermore the server is a problem. I'm not a security programmer and when I left off I had a background saving system set up on the server but I couldn't actually move into persistence because I needed a login server. The problem is that I have no idea how to securely let someone log into one server and password authenticate, then move on to a different - completely unrelated - server that doesn't share memory space with the first. Some help in that area might be nice too.
Mind you that I may start working on Onee-sama Tasukete before PanMMO when I get my Pandora, to get a simpler game finished and become familiar with the Pandora. And after that wall of text I'll leave you all with a random snapshot of the head of the player model I'm (ever so slowly) working on:
First off, I'm giving serious thought to nuking the client and redoing it. It's a kludge which - unlike the server - doesn't follow proper coding conventions aside from the GUI library I made. It has residual stuff left over from when I was still using SDL and Pyglet which makes me wince, and really it's just a thin map displaying layer for interacting with the server. Again, the only really important thing here is the GUI library, which I can keep anyway in a recode.
Benefits of nuking the client are various. First off, to get around the security issues, I'd probably start off doing Python code that can be compiled using Cython. I'm sure it could be decompiled, but this is a layer of security I'm comfortable with; pure Python or even obfuscated Python code is not. It'd also make the client much faster and more lightweight, which is probably a good thing for the actual Pandora.
Second it allows me to revise my plans for a 2D game and make it 3D with retro styling. Viability is up in the air but I'll come back to that later. Plans are to create a top-down view 3D world along the lines of Ragnarok Online, except with cell shaded and outlined, normal mapped 3D characters and enemies. I'd do my best to add some pixel shadery goodness to get that delicious retro styling we all love, so that shouldn't necessarily be a concern.
One practical reason for a switch to 3D is simple workload. It takes a lot of time to animate pixel art. More time than it does to rig and weight a 3D model. And once you have say, the human characters bones animated, you can rig them to anything and hey presto, your work's done. With 2D you have to reanimate every item in the game by hand, which stays a lot of work and the thought of adding in extra animations later in development quite frankly horrifies me in terms of workload. It's just no good.
Another is that I've been programming 2D graphics for a long long time and I'm pretty bored of them. Back when I started PanMMO I didn't really know anything about 3D graphics, but I've since brushed up on it using XNA. I know enough to write my own shaders now and get a game off the ground. It also keeps working on the client's graphics fresh for me since I've been coding 2D graphics forever and I can pretty much do it in my sleep now, but 3D graphics is new, challenging, and interesting.
It also gives me a chance to work on my sorely neglected 3D modelling skills.
Stuff I don't know about; what the Pandora/OpenGL ES can do 3D wise. Can it basically do anything a desktop can do, just...a bit more slowly? Should I hold my breath for normal mapping which would be a great improvement to cell shading quality, or should I be complacent with per-pixel-lighting? How does texture memory work, is it just the device's general RAM? Will I need vertex buffer objects? Where are those kept if I do? If it's all in shared memory space, is there any improvement using VBOs over simply "uploading" everything to "the graphics card" every frame? Can the Pandora render-to-surface? Are pixel/fragment shaders going to be blazing fast like they are on desktops, or am I going to have to spend tons of time optimizing those to make everything run at proper speeds?
I'm also unsure of what 3D library I want to use, having no experience with any of them, just XNA. Ogre has Python bindings, but I have no idea if PyOgre is going to be workable on the Pandora. Working with Ogre or Irrlicht is possible, what with using Cython, but I have no idea how user friendly that'd be. Then again, working with OpenGL from Python wasn't that user friendly to begin with, really. And beyond a cursory knowledge of those two I have no idea about any other engines. Suggestions in this area are very welcome.
Furthermore the server is a problem. I'm not a security programmer and when I left off I had a background saving system set up on the server but I couldn't actually move into persistence because I needed a login server. The problem is that I have no idea how to securely let someone log into one server and password authenticate, then move on to a different - completely unrelated - server that doesn't share memory space with the first. Some help in that area might be nice too.
Mind you that I may start working on Onee-sama Tasukete before PanMMO when I get my Pandora, to get a simpler game finished and become familiar with the Pandora. And after that wall of text I'll leave you all with a random snapshot of the head of the player model I'm (ever so slowly) working on:
Last edited by a moderator: