There are two ideas coming to mind. A replication method and/or a command queue of single cells modifications.
The replication method requires the syncronisation of the clients with the server. This will be more or less a must have in your case, e.g. in the case of that a client joins your server or if the client doesn't hold all of the terrain of the server in memory at once. This could be done by checksums of blocks. The client, when connecting to the client, sends all checksums to the server, the server will keep this saved for each client to compare it to the current state of the world around the client. If the server detects an invalid checksum it will starts to send a new block to the client. Just don't expect that all clients are always on sync, this will not happen and is often not necessary. Compare a multiplayer game (especially MMORPGs) with two players on two monitors side by side and you will see what I mean.
The second method (your number 1) helps to sync the replication faster by propagating modifications faster to the clients. Instead of replicating a whole block all the time, you could send only modifications of single cells to the clients as stream (if client is able to see it) and do reactivate the replication mechanism after the modification of a block stopped, in this case the replication by checksums will be reactivated and any error will automatically be corrected.
PS: in general, send the modifcation command to the server and execute it there,instead of modify the state on the client and replicate (merge!) it on the server afterwards.
I've seen Game Maker too and i liked. Can i make serious game with that kind of tools (Game Maker, RPG Maker, Unity...)?
I don't want an "automatic" tool type. I have good programming skills with Java (OO programming) and I like to write code. What languaje Game Maker uses?
When developing a game you have normally three programming categories:
- engine development
- tool development
- content/gamelogic development
Engines are often developed in more traditional languages like C/C++ or even java. Tools are often developed in languages which best suites the task and content is often developed in a scripting language (depends on engine support).
What way to go depends on what goals you are chasing.
1. I want to code a game and sell it:
The effort to develop a game from ground up is absurdly high. Therefor you should use as many tools/engines as possible to decrease the workload. The workload is not immediatly visible at the start, but it will increase exponentially over time.
2. I want to learn making a game:
Still use an existing engine and make a prototype with some placeholder art. If you are not really experienced in (game) development (I would recommend a few years), then you will refactor/throw away a lot of code. It is faster to learn by developing a quick game prototype first, then by maintaining a fragile code base over years.
3. I just want to code, best something to do with games:
In this case write a demo of some topic you are most interested in or a small useful tool (artists are really thankful about free, useful tools). This could be a render demo or a zombie simulation. Take care, that it have a small scope to ensure to finish it in time.
Personally, I like content better than art. Content as in, quality of story, writing, and game mechanics. I think art is important, but sometimes it gets in the way of what the game could truly be. I've seen many a game with fluid animation and stellar graphics, yet lacking in story, writing and overall game play.
Although I may be biased since I'm a programmer and can't draw to save my life (aside from a killer stick man if I do say so myself).
Which do you think is more important?
This is my personal opinion:
Once you dig into the content vs art topic, you will see that it is tragedy. From my experiences, there are only really three ways to go for an indie dev. Either produce really appealing art (in this case content is secondary), produce really un-appealing art and you might join the club of curiosities, which could bless you with media coverage (in this case content will attract and hold a certain fan base) or finally produce real art.
Just having decent art is often not enough to please most of the folk (almost every one will find, that your game looks 95% good, but just this last 5% are more or less a showstopper ). People like to talk either about the rich/poor and beautiful/ugly things, but seldom about normal stuff. And you need people to talk about your stuff if you want to get awareness.
Therefor it might be an better option to stick to really low,unappealing art (e.g. ascii,8bit art) instead of investing lot of time or money to get to a decent art level. Though if you really have the option to make some appealing, polished art, go for it. But remember to choose the right scope, art creation is really costly.
If you want to learn car driving, are you starting to construct your own car first ? Creating a game engine is an interesting and challenging task, but if you really want to create a game, you should start with an existing engine.
Other question : RPG maker is a game engine?
Yes, kind of. It sounds like a very good start for a 2d rpg !