Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
NadaTooma
Aug 24, 2004

The good thing is that everyone around you has more critical failures in combat, the bad thing is - so do you!

Biggz posted:

I'm currently using LibGDX which is a nice middle ground between rolling your own engine and using Unity. Although, you can get right in to the nitty gritty of the engine code if you want. It's cross platform (Android/Win/OSX/HTML5), IOS "coming soon" but I think a few projects have already been released to iTunes App store with it.

Anyway, I like it and thought I'd mention it.

I'm using LibGDX for my first entry in the "One Game A Month" challenge. I'm using it to write a Tetris clone for January, and then in February I plan on using it again, but for a more elaborate game. I'm here to agree with you that it's a nice middle ground between low-level and high; you don't have to write your own game loop or raw input handling, and yet it feels like an API rather than a framework. It's quite nice and I'm enjoying working in it so far, even if the documentation is a bit lacking in places.

Plus, LibGDX means you write the game in Java, which I actually enjoy working in, outside of the occasional bits of over-wordiness that Java's famous for. It's also good that LibGDX doesn't get caught up in Java's tendency to bury the useful APIs under several layers of design patterns. :)

In fact, for Java, is LibGDX pretty much the only way to go? I don't know of any other major Java game APIs, and Google doesn't show anything useful.

Adbot
ADBOT LOVES YOU

TheresaJayne
Jul 1, 2011
I was talking with a friend who used to work for Blizzard, I am trying to develop a MMORPG but i am a noob at 3D worlds and how to store the data in the server to represent the world.
He suggested that i use hex fractiles based on the Gosper Curve, which would mean each item/character can be in a single hex in a list ranging from 0-65535 within a larger Hex representing the world region i am in.
He hinted that this is how Bliz actually does this.
But that would mean that each region would have 65536 locations a player can be at as apparently the fractal nature of the gosper curve means you can position yourself within that larger hex by just knowing your location on the list.

Here's the crux, I dont get it, have never done A Level or advanced math so have no real understanding of how it works (and the only examples i can find are logo versions)

Can anyone point me to something to help a non advanced math person understand....

Thanks

Theresa

The Gripper
Sep 14, 2004
i am winner
I've never come across anyone using a Gosper curve and a hex-grid map solution like that but it seems like flowsnake has some of the functionality you'd want, namely translation between indicies on a gosper curve to 2D co-ords on a hex map. So you'd store the index on the curve and translate that to a position in your actual grid.

I literally have no idea what would make that more efficient than other solutions though, so it's possible I'm just as lost as you on this one.

e; flowsnake is hardcoded for a 21-depth island, but that's not an actual limitation as far as I can tell.

The Gripper fucked around with this message at 15:33 on Jan 17, 2013

Orzo
Sep 3, 2004

IT! IT is confusing! Say your goddamn pronouns!
That sounds like it's very complex and probably optimized for Blizzard and has no business being the default solution in anyone else's project. Why not just use a Vector3?

Pfhreak
Jan 30, 2004

Frog Blast The Vent Core!

TheresaJayne posted:

I was talking with a friend who used to work for Blizzard, I am trying to develop a MMORPG but i am a noob at 3D worlds and how to store the data in the server to represent the world.

Stop here. What else have you done? Published any other games? You are trying to paint the Sistine Chapel here...

quote:

Can anyone point me to something to help a non advanced math person understand....

Thanks

Theresa

Advanced math is more or less required for making games. Might be a good idea to brush up on linear algebra and trigonometry. Also, we don't sign our posts here.

HaB
Jan 5, 2001

What are the odds?

Pfhreak posted:

Stop here. What else have you done? Published any other games? You are trying to paint the Sistine Chapel here...


Advanced math is more or less required for making games. Might be a good idea to brush up on linear algebra and trigonometry. Also, we don't sign our posts here.

Heh.

What my esteemed colleague here is trying to say, put more gently:

If you haven't done game programming before - it's usually better to start small. Make a breakout clone or a pong clone. MMORPGs are developed by MASSIVE teams of really GOOD (in most cases) programmers, or at the very least EXPERIENCED ones.

If you bite off WAY more than you can chew, it is likely to sour you on the entire process. So - baby steps. Make a SMALL, single player game. Learn how that works. Make a SMALL networked game. Learn how THAT works. Make a 3D game using someone else's engine - Learn that.

Each thing is a building block and another tool in your arsenal. If you look around game coding messageboards, and had a nickel for every person who essentially said "I've never made games before, but I'm working on an MMORPG!" and was subsequently never heard from again, you'd be all "no no, Mr. Rockefeller - lunch is on ME today."

I have been an application developer for years, and I can do that in my sleep. Game programming is a TOTALLY different animal. I too don't know much advanced math, but I had to learn some to do even the SIMPLEST games. But saying "I'm new to programming and I am working on an MMORPG" is akin to showing up and saying "I learned how to say 'hola' in Spanish. Brb - gonna go translate War & Peace!"

Don't get me wrong - I wish you all the luck in the world, but you should be realistic about the size of the task you're taking on.

Good luck.

xzzy
Mar 5, 2009

On the other hand, there's nothing wrong with aiming high. Just be aware that's what you're doing and that it's going to be a long, long climb. If you still want to keep that lofty goal, break it down into bite sized pieces. Like if you want your MMO to have real time combat, make a small single player game that implements the combat only. A procedural terrain system? Make a sandbox world generator.

Then down the road you can repurpose that code into your grand design (or more likely, you'll rewrite it from scratch because you got smarter and found a better way to do things, but at least you'll know whether the idea works).

Orzo
Sep 3, 2004

IT! IT is confusing! Say your goddamn pronouns!

xzzy posted:

On the other hand, there's nothing wrong with aiming high.
There is such a thing as aiming too high. Aiming to create an MMO as your first game is almost 100% destined for failure, as demonstrated by the fact that nobody has ever created a completed/functional MMO as their first game, ever.

Note that this isn't in reply to TheresaJayne because I have no idea what her career/experience is.

Tayacan
Dec 8, 2012

Fucking nerd

Orzo posted:

There is such a thing as aiming too high. Aiming to create an MMO as your first game is almost 100% destined for failure, as demonstrated by the fact that nobody has ever created a completed/functional MMO as their first game, ever.

Step one: Remove the first M.

Jewel
May 2, 2009

I guess it all just boils down to programming being no different than any other skill. You can't start painting and instantly paint something on the level of quality of the Mona Lisa, and if you try to you'll probably get discouraged when you can't. But you can set your goals that high, as long as you recognize the fact that you won't go from A to B very fast, and it'll take a while. Savor the journey though! Programming's as fun as any other skill.

Edit: vvv Yeah, definitely. That's what I meant by "savor the journey". Just program and make stuff, you'll get better.

Jewel fucked around with this message at 20:34 on Jan 17, 2013

Tayacan
Dec 8, 2012

Fucking nerd

Jewel posted:

I guess it all just boils down to programming being no different than any other skill. You can't start painting and instantly paint something on the level of quality of the Mona Lisa, and if you try to you'll probably get discouraged when you can't. But you can set your goals that high, as long as you recognize the fact that you won't go from A to B very fast, and it'll take a while. Savor the journey though! Programming's as fun as any other skill.

However, practicing for the sake of getting "good enough for X" is really boring. It's much more fun if you just try a smaller project, and complete it for its own sake.

OneEightHundred
Feb 28, 2008

Soon, we will be unstoppable!

Orzo posted:

There is such a thing as aiming too high. Aiming to create an MMO as your first game is almost 100% destined for failure, as demonstrated by the fact that nobody has ever created a completed/functional MMO as their first game, ever.
An "MMO" is unrealistic given the usual definitions of that, but online RPGs in general are not as unapproachable as they look. A lot of smaller online RPGs don't have much more content than an SP game and dodge most of the technical hurdles by splitting the world into distinctly separate zones, which basically makes them a glorified co-op game with central chat/inventory services. One project that comes to mind is Clan Lord, which is about as bare-bones of one as you can get.

Making any game that depends on a vibrant community to be worthwhile is always a huge risk though, especially when the online RPG market is supersaturated right now. There's basically no room for an amateur MMO when there are a million Korean F2P tits-in-the-banner-ads animefests that people can play instead.

Above Our Own
Jun 24, 2009

by Shine

TheresaJayne posted:

I was talking with a friend who used to work for Blizzard, I am trying to develop a MMORPG but i am a noob at 3D worlds and how to store the data in the server to represent the world.
He suggested that i use hex fractiles based on the Gosper Curve, which would mean each item/character can be in a single hex in a list ranging from 0-65535 within a larger Hex representing the world region i am in.
He hinted that this is how Bliz actually does this.
But that would mean that each region would have 65536 locations a player can be at as apparently the fractal nature of the gosper curve means you can position yourself within that larger hex by just knowing your location on the list.

Here's the crux, I dont get it, have never done A Level or advanced math so have no real understanding of how it works (and the only examples i can find are logo versions)

Can anyone point me to something to help a non advanced math person understand....

Thanks

Theresa
If you seriously think an MMO is a viable project without a large team of experts and support staff and many millions of dollars in funding then you are hopelessly naive and undereducated. The "I don't know how to program or anything but I'm going to make an MMO!" thing happens often enough that it's kind of an in-joke. Read this thread. It's long but read all of it because some people actually give really good advice.

Vinterstum
Jul 30, 2003

Pfhreak posted:

Stop here. What else have you done? Published any other games? You are trying to paint the Sistine Chapel here...


Advanced math is more or less required for making games. Might be a good idea to brush up on linear algebra and trigonometry. Also, we don't sign our posts here.

That said, I've been programming AAA MMOs for over six years and I had to google Gosper curves just now. Also, as mentioned, just store actual coordinates. If you really need to, you can layer a grid system on top. But you don't.

SupSuper
Apr 8, 2009

At the Heart of the city is an Alien horror, so vile and so powerful that not even death can claim it.
On a tangent, what do people recommend for making browser-based (server-side, not client-side) games? Seems everyone uses PHP and Flash, yet everyone also loathes them. :v:

Shalinor
Jun 10, 2002

Can I buy you a rootbeer?

SupSuper posted:

On a tangent, what do people recommend for making browser-based (server-side, not client-side) games? Seems everyone uses PHP and Flash, yet everyone also loathes them. :v:
These days? Unity. Or some equivalent "write once deploy everywhere" tool. I can never remember the lower-level options that are similarly portable, but if you want lower, still pick one of those rather than writing a native Flash/HTML5 game.

Flash is dying, HTML5 is improving but still a bit of a laugh, etc, and no "it's like C++ but for web code" standard has even remotely emerged yet. Unity (or something like Unity) lets you dump to Flash, eventually HTML5, it can do a Chrome native app, it can dump the (critical) mobile version, etc - and portability is king, with the direction the industry is going.

EDIT: But odds are good you'll still be writing PHP for the back-end. I kind of like PHP, actually :unsmith: - it just really sucks to debug. You'll also be writing a bunch of SQL, and you'll see stored procs in your sleep.

EDIT2: Also, it really disappoints me that there were no references in the modern X-Com to the thing in your avatar. I wanted closure on the pulsing pink piston, drat it.

Shalinor fucked around with this message at 03:48 on Jan 18, 2013

Orzo
Sep 3, 2004

IT! IT is confusing! Say your goddamn pronouns!

Above Our Own posted:

If you seriously think an MMO is a viable project without a large team of experts and support staff and many millions of dollars in funding then you are hopelessly naive and undereducated. The "I don't know how to program or anything but I'm going to make an MMO!" thing happens often enough that it's kind of an in-joke. Read this thread. It's long but read all of it because some people actually give really good advice.
Out of curiosity, what is that thread? Archives required.

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe

Orzo posted:

Out of curiosity, what is that thread? Archives required.

Crimson Haze. I have no idea why it isn't goldmined.

ZombieApostate
Mar 13, 2011
Sorry, I didn't read your post.

I'm too busy replying to what I wish you said

:allears:
Havok is pretty fun to play with :unsmith:

Thread safety isn't so much fun :smith:

Orzo
Sep 3, 2004

IT! IT is confusing! Say your goddamn pronouns!

Suspicious Dish posted:

Crimson Haze. I have no idea why it isn't goldmined.
Shalinor... you know what you must do... based on searching YouTube for Crimson Haze, I must see this game's thread.

Bondematt
Jan 26, 2007

Not too stupid
Does anyone have the "song" Crimson Haze inspired? It was amazing. Just a bunch of instruments that sound like they are melting gradually. Googlefu not working out here.

Edit: got it

http://tindeck.com/listen/spwx

Bondematt fucked around with this message at 07:16 on Jan 18, 2013

TheresaJayne
Jul 1, 2011

xzzy posted:

On the other hand, there's nothing wrong with aiming high. Just be aware that's what you're doing and that it's going to be a long, long climb. If you still want to keep that lofty goal, break it down into bite sized pieces. Like if you want your MMO to have real time combat, make a small single player game that implements the combat only. A procedural terrain system? Make a sandbox world generator.

Then down the road you can repurpose that code into your grand design (or more likely, you'll rewrite it from scratch because you got smarter and found a better way to do things, but at least you'll know whether the idea works).

This is exactly what i am working on, at the moment i just want to get the back end data store working as fast and smooth as i can get it - being a back end server dev that seems to be the best starting point for me, then i can expand to displaying the data in a simple front end etc.

I did do simple 3D work at college many moons ago so understand how to take a 3D location and display as a 2D image etc.

I just don't get how using a fractile makes storage of location easier or faster?

M31
Jun 12, 2012

TheresaJayne posted:

I just don't get how using a fractile makes storage of location easier or faster?
A fractal has the property that you can compose multiple of them into the same shape (but larger). This has the advantage that you can easily subdivide a grid, in a similar fashion to a quadtree or octree and reuse all your algorithms on every scale. Now the reason they use a Gosper curve to create this grid, is probably because it has a hexagon shape. If you use a square grid you have the edge case that a diagonal cell is further away than an adjacent cell. You don't have this problem with a hexagon grid, where all bordering cells have the same distance.
They are not using a 'free' coordinate system, because a grid based location system is much simpler (and thus faster to calculate, and harder to break).

Note that I just made all of this up, so I don't know if that is the actual reason.

M31 fucked around with this message at 14:50 on Jan 18, 2013

akadajet
Sep 14, 2003

Orzo posted:

Shalinor... you know what you must do... based on searching YouTube for Crimson Haze, I must see this game's thread.

Just upgrade your account. It's worth it.

The Gripper
Sep 14, 2004
i am winner

M31 posted:

A fractal has the property that you can compose multiple of them into the same shape (but larger). This has the advantage that you can easily subdivide a grid, in a similar fashion to a quadtree or octree and reuse all your algorithms on every scale. Now the reason they use a Gosper curve to create this grid, is probably because it has a hexagon shape.
Also using a fractal (probably not just limited to a Gosper curve) means that a single index value can represent a position with infinite* resolution without requiring references to any parent object.

*as infinite as the depth of your curve and the MAX_VALUE of the type you're storing index in. The flowsnake implementation I posted earlier has a depth of 21, which is the most I believe you do while still representing indices as an int64.

Shalinor
Jun 10, 2002

Can I buy you a rootbeer?

Orzo posted:

Shalinor... you know what you must do... based on searching YouTube for Crimson Haze, I must see this game's thread.
It didn't get archived back then for whatever reason - it isn't my place to question the mods of that time period or their calls.

... seriously, just get archives access, because that thread is worth it.

No Safe Word
Feb 26, 2005

Shalinor posted:

It didn't get archived back then for whatever reason - it isn't my place to question the mods of that time period or their calls.

... seriously, just get archives access, because that thread is worth it.

A great teaser nugget from the OP that I got just from quickly scanning a few pages:

bestow posted:

Q: Who will code this?
A: The community. After the game design document is completed, several months from now. And there is some more art. There should be enough to attract a few programmers. Once I find a programmer that is fairly experienced, and is willing to stick around they will become the programming representative. They will help make the game, but also help manage and direct the rest of the programming community. Controlling overlap, making sure everything everyone makes cooperates will with unity, moderating code to fit the program better. This position should go to the best programmer that joins the project (there will also be representatives for the other disciplines, art, music etc.) As many of you have mentioned I'm not good enough at any individual discipline (except maybe design) to do it all.

Q: How will they get 25 years of experience in 8 years starting from literally no knowledge of coding?
A: The programming representative ideally will have some experience with games behind them. There are people out of work that have experience in this field, and there are people that have made their own projects, and had advanced schooling in this field. I just have to find them, and convince them to join the project. Once the design document is complete, and the art and style of the game is more fleshed out, I feel this is very much a possibility. So, to answer your question, not every programmer will be learning as they go, I just need to find several with some good experience (this task isn't any different than starting a small project).

Q: How will you pay for servers, server maintenance, and storage?
A: It's going to be quite a while before we need to pay for servers. And once we do I assume will have a couple more followers, and general community interest in playing the game. If people want to play the game, they will donate, and that will pay for the server. If they don't, the server goes down, and the player base is reduced to those working on the game. Ad revenue on the site and possibly in the installation file (check this box to make ask.com your homepage, check this box to install open office etc...) will also help the server fees, once they exist. And maybe if the game gets popular enough, another company will host the site and the game. The game however, will never be pay2play, as the way it's built simply won't allow for that from a legal perspective, this has been my stance from the start. Storage for the download and patches will probably come from sourceforge as this will be an open source project (as soon as it has some source hurr hurr)but I'm also considering using bit torrent for this, basically the apex of the internet community. As for which OSS to use I wouldn't mind some suggestions.

Q: Why do you deserve credit for leading this when you have no development skill or talent to speak of?
A: I can draw, I can write, I can 3d model, I can rig, I can animate. I'll grant you that I'm not as good as industry professionals, in any of these regards, but I can do many of them "good enough". Ultimately the low poly barrel prop I made in Maya, isn't any better or worse than a barrel somebody on blizzard's staff made for WoW. There are diminishing returns on how "good" someone can be, especially in regards to the art style they are working with. And making something really good is more or less a matter of time, I've never spent a solid 2 weeks 8 hours a day working on a single model, and thus they don't look as good as god of war 3 Kratos, I can accept this. If I worked on the model as long, I honestly feel I could produce something close, or at least better than I ever have. Although people are born with more "talent" in certain fields, everyone can learn everything, I'm a firm believer in this, saying "I'll never learn to sing, gently caress it." is just sealing the deal. And getting back to your question, I don't plan to profit off of this in any way besides maybe getting a job. The only credit I'm taking is for the idea itself, the designs I come up with, and the work I do. I'm not some kind of rich publisher at the top of the pyramid telling the artist to do awesome stuff, and then taking credit because I found them. I helping do everything that artist is doing, I'm involved.

a slime
Apr 11, 2005

Welp, looks like Unity can't properly handle rotation-locked boxes moving across flat surfaces. It seems like the way they lock rotation is just to reset it after each physics frame, because objects incur random forces in directions orthogonal to the force applied when under friction. This sucks.

Above Our Own
Jun 24, 2009

by Shine

Orzo posted:

Shalinor... you know what you must do... based on searching YouTube for Crimson Haze, I must see this game's thread.
Upgrade. You will get $10 of entertainment in that thread alone, promise.

Tres Burritos
Sep 3, 2009

So I need some (Unity) AI advice.

I've managed to make a total war style unit creator that highlights the ground where the unit will go, like such.


And then makes the unit.


I want to move my cubes around now, and I'm running into some issues.

So my first idea is that I could make a class called "UnitCommander" or something that controls positioning and movement for each of the individual cubes. But how do I implement that?

I need a script that isn't attached to any one GameObject. So I should use a "ScriptableObject"?
But if I use a scriptable object I don't have the Start() and Update() functions so then I would have to set that up myself, correct? I also need the script to be able to detect when a cube in a unit is clicked on and I'm sort of floundering on how I would do that without inheriting from MonoBehaviour.

Or maybe I'm coming at this from completely the wrong direction, I can't say.

a slime
Apr 11, 2005

I don't know what a ScriptableObject is, but I think the canonical way to do that is to GameObject->Create Empty and attach it to that

Tres Burritos
Sep 3, 2009

not a dinosaur posted:

I don't know what a ScriptableObject is, but I think the canonical way to do that is to GameObject->Create Empty and attach it to that

gently caress, god, jesus. I hate it when I over think poo poo like that. Thanks man.

Orzo
Sep 3, 2004

IT! IT is confusing! Say your goddamn pronouns!
Is it common practice to solve the texture-atlas-tiling-texture-linear-filtering-seam-bug (that's a mouthful, hopefully a few people know what I'm talking about) by surrounding a tiling texture with single-pixel wraps of the other side? It seems to work, I was wondering if there was a more 'standard' way.

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe
I just think a lot of people just tank it and display the artifact because if it's noticeable, you have really low-quality textures, or you need to design your atlas better.

Orzo
Sep 3, 2004

IT! IT is confusing! Say your goddamn pronouns!
Well, in my case I'm working with 32x32 tiles, I'm not sure if you meant to equate low-resolution with low-quality. But what do you mean by designing your atlas better?

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe
Don't put dark and light textures to each other. If you have lots of dirt and grass textures, put the ones that transition between dirt and grass in the middle between the two.

Unless of course you're constructing your atlas at runtime and then textures are put in the atlas by load order, which you shouldn't try to do. Make it part of your build process once you get far enough.

Polio Vax Scene
Apr 5, 2009



Can you show a picture of what is happening?

Orzo
Sep 3, 2004

IT! IT is confusing! Say your goddamn pronouns!

Suspicious Dish posted:

Don't put dark and light textures to each other. If you have lots of dirt and grass textures, put the ones that transition between dirt and grass in the middle between the two.
That sounds kind of arbitrary. A correctly designed and implemented game using atlases will have no artifacts whatsoever, no matter how they're arranged in the source file. I posted a potential solution, I was just wondering if that's the best one.

quote:

Unless of course you're constructing your atlas at runtime and then textures are put in the atlas by load order, which you shouldn't try to do. Make it part of your build process once you get far enough.
I'm not doing the construction at runtime yet, although I may in the future, using a rectangle-packing algorithm.

Orzo
Sep 3, 2004

IT! IT is confusing! Say your goddamn pronouns!

Manslaughter posted:

Can you show a picture of what is happening?
Normal texture coordinates illustrating 'bleeding' from the surrounding atlas textures, as expected. Placing similarly-hued tiles next to this one in the atlas may mitigate but not completely solve the issue:


Using a popular technique of offsetting the texture coordinates by a half-texel. This works great for eliminating the bleeding problem for non-tiled textures like characters and other things that aren't meant to tile, but creates seams otherwise:


Using the original texture coordinates but adding a border around it (that is, the original texture is 32x32 and the texture cooridnates are still that 32x32 box, but the source image has all of the rightmost pixels copied to the left, etc, to create a 33x33 box). This works perfectly:

Adbot
ADBOT LOVES YOU

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe

Orzo posted:

That sounds kind of arbitrary. A correctly designed and implemented game using atlases will have no artifacts whatsoever, no matter how they're arranged in the source file. I posted a potential solution, I was just wondering if that's the best one.

As I said, most games just tank the artifact, and use large textures or cleverly arrange their atlas to minimize the appearance of it.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply