Where do I start, if I want to make....

Started by
31 comments, last by arthursouza 12 years, 7 months ago
I have an interesting question that (hopefully) can be answered relatively simply.

Background:
I take a top-down view of things. That means when I want to start working on a project, I start by figuring out what will be required (in a big-picture sense).

My partner and I have recently completed the design for an online multi-player game (probably best fitting the MMORTS genre). The game somewhat resembles games like: AstroEmpires, Planetarion, Ferion, Utopia, etc. (Some of you will probably be familiar with the games I'm talking about). I have some experience with programming languages, but only on the "ground" level. (Years ago, during the windows 3.1 era I created several applications with visual basic, for example, and I know enough HTML to create a functional web page. I also have a basic understanding of the object-oriented programming model, etc.)

I'm aware of the scope of the project I'm embarking on. I'm not joking around, and I have some resources I can bring to bear on the project, but I need to figure out where to START as far as the programming side of this goes, so if some folks who know a little more than I do would give me some pointers as far as direction, I would really appreciate it.

What the project requires:
A database back-end to store "everything" (including player info, galaxy map info, resources, etc - thus "everything").
A web browser "front-end" for user interface
This MUST include a 3-dimensional "galaxy map" that can be manipulated by the user (both to change perspective and to select elements inside the map).

In regard to this map, what I envision is something resembling Google maps or Wikisky (zoom in, zoom out, search for and highlight certain features, click to access info), but NOT using pixel-based imaging, instead relying on a simple database of coordinate-based points (stars) WITHOUT associated pixel data rendered based on current user camera perspective.

This MUST be available through a web browser interface.


Now the optional part:
I know that the above is possible using current technology (really not even that difficult, tech-wise, even though some of the spatial-reference issues could make your eyes cross). What I would LIKE to do is to pre-load star position data from the server and cache it on the user's computer, then use the USER's computer to render the star map from a given perspective, without using server resources. I'm not certain whether this is possible without creating a user-end application. Is it?
If this is NOT possible, I still want to reduce the load on the server as much as possible. I see several possible options for this, especially if I understand correctly how database requests are handled and how the user's computer can be utilized in rendering (For example, any time the user clicks and "drags" to rotate the camera, based on its focal point, if I can't pre-cache and use the user's machine to render the map in real time as it rotates, could I instead just show a compass for reference, then only render the final image once the user has released the mouse button?)

The problem is, I only have a general understanding of these concepts, so I don't know specifically which programming languages (and which technology) to dig into and start learning.

So, the simplified question is --

What are my options for languages in which to create this application, back end, etc and what are the pros and cons of each?

Thoughts are appreciated.



*EDIT*

[color=#1C2837][size=2] this is what I've gotten so far:

Dynamic rendering and map interface:
[color=#1C2837][size=2]html5, flash or silverlight, possibly Unity (though after looking at that, it seems like a bit more than I need)
[color=#1C2837][size=2]

[color=#1C2837][size=2]Web front-end:
[color=#1C2837][size=2]html (obviously), CSS, javascript, .ASPX
[color=#1C2837][size=2]

[color=#1C2837][size=2]Middle tier:
C# or java, (with C# being favored), along with possibly php? the .net framework (Not quite sure how to categorize, but it has to be in there somewhere.)
[color=#1C2837][size=2]

[color=#1C2837][size=2]Database end:
MySQL or MSSQL
[color=#1C2837][size=2]

[color=#1C2837][size=2]

[color=#1C2837][size=2]I'm sure I've mis-categorized a couple of these, but that's the general gist of things.
[color=#1C2837][size=2]

[color=#1C2837][size=2]I WAS hoping for some pro/con info on them and other opinions, but I'll take what I can get.
[color=#1C2837][size=2]

[color=#1C2837][size=2]Thanks again, (and as I said, any further feedback is welcome
Advertisement
There's not enough info here to give you any sort of recommendation. By and large, the language choice at this point will be determined by your core staff and what their language familiarity is.

And if your core staff doesn't have any significant language familiarity, it won't matter.
I suppose the best way to reply to your post is that my partner and I ARE my core staff. (At the moment. That will change when I have a more comprehensive idea of what my requirements are and what I need to do to make this happen).

The QUESTION was, what are my OPTIONS, and what are the pros and cons associated with them.

(Example: ASPX and .Net along with Microsoft SQL are possible options, but they are not open source, so they require licensing, they are only compatible with some servers, and finding people who are expert in their use may be more difficult. They DO provide more secure options, though I've also heard that some people find them ...clunky?)


This is a hobby for me. Before I determine what I need for staff if i want to make it a reality, I need to determine what direction I'll be going. That means researching and understanding, at least to some extent, the options available to me.

At this point I don't even know what the playing field looks like.
I would use Silverlight for the star map. Silverlight with a 3D library, like Balder, would be ideal and making it would be relatively easy. It is cross-platform and runs(and does all rendering) on the client's computer.
I would suggest you to take a look into the .NET Framework in general since it has everything there.

Based on your post I can not really give you any more pointers without knowing more about the game. I did a little Googling on the titles you provided and it seems that the game would be a resource simulation in space that runs basically in the browser environment and has a 3D map where the player can interact. Is it true?
[size=2]Ruby on Rails, ASP.NET MVC, jQuery and everything else web.. now also trying my hand on games.
Some possibilities:

Unity
- Front-end 3D rendering inside a browser.
- Also gives you the option to make a stand-alone executable if you want people to be able to install the game in additon to run it in a web browser.
- Requires users to install a Unity Web Player (similar to Adobe Flash Player).
- Front-end game code can be written in UnityScript, C#, or Boo.
- MIGHT work on some mobile devices, but I haven't researched this.

Amazon S3
- Content delivery network (CDN)
- Hosts content files for your game, such as textures, sounds, galaxy maps, etc.

Amazon EC2
- Compute cluster
- You can rent servers to run your server code.

Membase
- Open source key/value database.
- Use this to store player data, or data that will change over time.

Language of your choice (I like C#, personally)
- You have a very wide selection of server-side technologies. Most modern general purpose languages can be used to write web services.
- If you use C# in Unity, you may as well use C# for the server as well.
- In my opinion, the Java-based technologies are complete overkill (struts, spring, etc).
- Fairly easy to write an entire web service from scratch, and might be a good idea to keep overhead low (increase request throughput).

I suppose the best way to reply to your post is that my partner and I ARE my core staff. (At the moment. That will change when I have a more comprehensive idea of what my requirements are and what I need to do to make this happen).


Right, and if you're not going to be leading development, you need to find someone who will lead development that you trust. What language they've got expertise in is... largely irrelevant. Every language can interact with databases. Every language can work with some front end technology to provide user interface. Picking the technology platform isn't going to impact your success nearly as much as picking that person (and then letting them make technology decisions based on your requirements). They can spend the time and effort to get more of the requirements to give you better answers than we can about how the different options will impact your game. They can understand what options are even in play given your requirements.

[quote name='Matrix6' timestamp='1315087858' post='4857270']
I suppose the best way to reply to your post is that my partner and I ARE my core staff. (At the moment. That will change when I have a more comprehensive idea of what my requirements are and what I need to do to make this happen).


Right, and if you're not going to be leading development, you need to find someone who will lead development that you trust. What language they've got expertise in is... largely irrelevant. Every language can interact with databases. Every language can work with some front end technology to provide user interface. Picking the technology platform isn't going to impact your success nearly as much as picking that person (and then letting them make technology decisions based on your requirements). They can spend the time and effort to get more of the requirements to give you better answers than we can about how the different options will impact your game. They can understand what options are even in play given your requirements.
[/quote]

Telastyn, I AM going to be leading development. I may very well be the SOLE developer, and that means I'm going to have to LEARN these languages. If that takes me five years, (or fifteen years) then so be it.
The question I ASKED was what languages and systems present good options for me. As I said, this is a hobby.

*Edit: In fact, this speaks even more strongly to figuring out which option is best from the get-go. If I'm starting with a "blank slate" I might as well use the most effective option for my situation. If you need more info, just tell me what you want me to expand on and I'll write you a novel if you like*

@HNikolas and Npyren

Thanks much. This is the kind of answer I'm looking for.

If I can get some idea what options are available to me I can do some research on them to see which fits my project better.

And yes, Npyren, it seems to me that what I'm looking for is fairly light-weight and (hopefully) simple. What I wasn't certain about (and had never seen before) was a browser-based live rendering of what is essentially (speaking in graphic designer parlance-- my background) vector graphics rather than raster images. (Or perhaps I just hadn't recognized what I was seeing).

Further thoughts are always appreciated.

Telastyn, I AM going to be leading development. I may very well be the SOLE developer, and that means I'm going to have to LEARN these languages. If that takes me five years, (or fifteen years) then so be it.
The question I ASKED was what languages and systems present good options for me. As I said, this is a hobby.


There are no good options. 15 years is a closer estimate given your stated goal and described experience. It doesn't matter what technology you pick for this project since it'll be out of date by the time you're ready to implement it.

That said; C# is a fine general purpose language for doing the middle tier work. You'll need javascript, CSS, SQL, and HTML4 at least. You'll need html5, flash or silverlight to do the dynamic rendering. I believe that there is free versions of MSSQL now, otherwise there's a variety of other database options to learn with.

I would perhaps focus on HTML development first given your background and since that will get you results faster. Get some menus working, tie them into a web service back end, tie that into basic db structures. Take it one step at a time, focusing on learning and prototypes before working towards the game.

And most of all, look through these forums. They are replete with people that want a mmo, think they know the scope of things... they invariably get stuck trying to do the hard things instead of learning. Or learn a little bit only to realize all the plans, design, work they've done is now a bad idea (under the light of experience). Then they do a re-write and spend another few months just re-doing what they've already done (and still aren't anywhere closer to getting something people can play).

I'm not here just to bust your chops. I've years of development experience; years here on the forums seeing people make the same stupid mistakes.
Hey Matrix, after reading ur post my first thing was.. "phew,that guy has high expectations "... so IMO you should now focus on creating a team consisting of people you can trust. Programming everything on your own without being a code head is a little bit hardcore ... You have to learn the languages, the engines, AI, The Game System, ... just everything. Even a professional coder would need a long time to make everything ready to ship out..

I dont want to discourage you, i think it is wonderful to have a dream and to work on a project, so go on and dont give up even when the hurdles are high. But be realistic . Henry Ford didnt assemble his cars by himself.. He found people to do it for him.

I open sourced my C++/iOS OpenGL 2D RPG engine :-)



See my blog: (Tutorials and GameDev)


[size=2]http://howtomakeitin....wordpress.com/


Hey Matrix, after reading ur post my first thing was.. "phew,that guy has high expectations "... so IMO you should now focus on creating a team consisting of people you can trust. Programming everything on your own without being a code head is a little bit hardcore ... You have to learn the languages, the engines, AI, The Game System, ... just everything. Even a professional coder would need a long time to make everything ready to ship out..

I dont want to discourage you, i think it is wonderful to have a dream and to work on a project, so go on and dont give up even when the hurdles are high. But be realistic . Henry Ford didnt assemble his cars by himself.. He found people to do it for him.


Hmmmmm..... Was that an offer? wink.gif


[color=#1C2837][size=2]There are no good options. 15 years is a closer estimate given your stated goal and described experience. It doesn't matter what technology you pick for this project since it'll be out of date by the time you're ready to implement it.
[color=#1C2837][size=2]

[color="#1c2837"]...[color=#1C2837][size=2]I'm not here just to bust your chops. I've years of development experience; years here on the forums seeing people make the same stupid mistakes.[/quote]

...I was half expecting to get this sort of thing when I posted here, but I WAS hoping I'd get at least enough real, useful feedback to get me started (and I believe I have; I now have at least a direction for my research). And now that you two have finished lecturing me (in Telastyn's case I saw it coming the first time he posted, and by the way, Telastyn you ARE "busting my chops," even if you think you have a good reason.)

What you two have been providing is NOT real or useful feedback. At best it's cautionary advice (if I was some kid who thinks he can spend a couple of years solo-programming the next gen MMORPG). I believe that the only thing I have put in bold up to this point is that [color=#1C2837][size=2]I'm aware of the scope of the project I'm embarking on.

How about, just for a second, you give me the credit for a little intelligence instead of just assuming that I actually DON'T understand what I'm getting into, and (this applies specifically to Telastyn--Dutchman was at least kind) look at your posts from my perspective under those conditions.

All you're doing is insulting me and patronizing me.



Now in regard to the project itself

The first thing I did when I started working on this project was to approach a friend of mine who IS a "[color=#1C2837][size=2]professional coder" (who works primarily in Microsoft .net, .ASPX and MSSQL, at least currently) and ask him how long it would take him to create the project, from start to finish, and how long he thought it would take me if I were doing it all alone.
[color=#1C2837][size=2]

[color=#1C2837][size=2]So no, Telastyn, you DON'T know better than me. ...and your input up to this point has mostly been just useless interference.

I would much rather NOT do it all by myself, and as it stands I have a partner who's already been working on the design with me for quite some time now who will be digging into the front end. I also have some friends who I might be able to rope in on the project as time goes on who have far more experience than I do with various aspects of it. I even have a friend who's genuinely interested in the project who controls millions of dollars of investment money (targeted at high-risk, high-return enterprises) who I may be talking to in a few weeks after I know what I'm dealing with. I also own my own business, and so I DO have resources I can devote to this over time.

None of that matters right now.

What matters is that I need to understand the technical side of what I'll be getting into. There's no way I'm going to just turn it over to someone else. That would totally defeat the purpose of starting the project in the first place, and I want to know where I'm going and what the cost of getting there will be (time, money, expertise) before I start pulling others into it.

That requires that I get my hands dirty and see what it looks like on the ground level. (It's what any intelligent leader does.)



Now, as a final request for feedback, this is what I've gotten so far:

Dynamic rendering and map interface:
[color=#1C2837][size=2]html5, flash or silverlight, possibly Unity (though after looking at that, it seems like a bit more than I need)
[color=#1C2837][size=2]

[color=#1C2837][size=2]Web front-end:
[color=#1C2837][size=2]html (obviously), CSS, javascript, .ASPX
[color=#1C2837][size=2]

[color=#1C2837][size=2]Middle tier:
C# or java, (with C# being favored), along with possibly php? the .net framework (Not quite sure how to categorize, but it has to be in there somewhere.)
[color=#1C2837][size=2]

[color=#1C2837][size=2]Database end:
MySQL or MSSQL
[color=#1C2837][size=2]

[color=#1C2837][size=2]

[color=#1C2837][size=2]I'm sure I've mis-categorized a couple of these, but that's the general gist of things.
[color=#1C2837][size=2]

[color=#1C2837][size=2]I WAS hoping for some pro/con info on them and other opinions, but I'll take what I can get.
[color=#1C2837][size=2]

[color=#1C2837][size=2]Thanks again, (and as I said, any further feedback is welcome, especially if it's getting to the point instead of just telling me how wrong I am.)

This topic is closed to new replies.

Advertisement