aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2012-03-11 10:53:27 +0200
committerPerttu Ahola <celeron55@gmail.com>2012-03-11 10:53:27 +0200
commit37b2bc3c0cb099e0a4c3b48db46c3ad8736eee04 (patch)
tree47c01d9ee10e3e0bc8efdfbe91b735d05ce7ebad /src
parentf49914dd1785626dd0eb6bfd122b139fef5f934d (diff)
downloadminetest-37b2bc3c0cb099e0a4c3b48db46c3ad8736eee04.tar.gz
minetest-37b2bc3c0cb099e0a4c3b48db46c3ad8736eee04.tar.bz2
minetest-37b2bc3c0cb099e0a4c3b48db46c3ad8736eee04.zip
Move huge comment from the beginning of main.cpp to doc/ancient_main_comment.txt
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp342
1 files changed, 0 insertions, 342 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 81905109d..0c936ab63 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -17,348 +17,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-/*
-=============================== NOTES ==============================
-NOTE: Things starting with TODO are sometimes only suggestions.
-
-NOTE: iostream.imbue(std::locale("C")) is very slow
-NOTE: Global locale is now set at initialization
-
-NOTE: If VBO (EHM_STATIC) is used, remember to explicitly free the
- hardware buffer (it is not freed automatically)
-
-NOTE: A random to-do list saved here as documentation:
-A list of "active blocks" in which stuff happens. (+=done)
- + Add a never-resetted game timer to the server
- + Add a timestamp value to blocks
- + The simple rule: All blocks near some player are "active"
- - Do stuff in real time in active blocks
- + Handle objects
- - Grow grass, delete leaves without a tree
- - Spawn some mobs based on some rules
- - Transform cobble to mossy cobble near water
- - Run a custom script
- - ...And all kinds of other dynamic stuff
- + Keep track of when a block becomes active and becomes inactive
- + When a block goes inactive:
- + Store objects statically to block
- + Store timer value as the timestamp
- + When a block goes active:
- + Create active objects out of static objects
- - Simulate the results of what would have happened if it would have
- been active for all the time
- - Grow a lot of grass and so on
- + Initially it is fine to send information about every active object
- to every player. Eventually it should be modified to only send info
- about the nearest ones.
- + This was left to be done by the old system and it sends only the
- nearest ones.
-
-NOTE: Seeds in 1260:6c77e7dbfd29:
-5721858502589302589:
- Spawns you on a small sand island with a surface dungeon
-2983455799928051958:
- Enormous jungle + a surface dungeon at ~(250,0,0)
-
-Old, wild and random suggestions that probably won't be done:
--------------------------------------------------------------
-
-SUGG: If player is on ground, mainly fetch ground-level blocks
-
-SUGG: Expose Connection's seqnums and ACKs to server and client.
- - This enables saving many packets and making a faster connection
- - This also enables server to check if client has received the
- most recent block sent, for example.
-SUGG: Add a sane bandwidth throttling system to Connection
-
-SUGG: More fine-grained control of client's dumping of blocks from
- memory
- - ...What does this mean in the first place?
-
-SUGG: A map editing mode (similar to dedicated server mode)
-
-SUGG: Transfer more blocks in a single packet
-SUGG: A blockdata combiner class, to which blocks are added and at
- destruction it sends all the stuff in as few packets as possible.
-SUGG: Make a PACKET_COMBINED which contains many subpackets. Utilize
- it by sending more stuff in a single packet.
- - Add a packet queue to RemoteClient, from which packets will be
- combined with object data packets
- - This is not exactly trivial: the object data packets are
- sometimes very big by themselves
- - This might not give much network performance gain though.
-
-SUGG: Precalculate lighting translation table at runtime (at startup)
- - This is not doable because it is currently hand-made and not
- based on some mathematical function.
- - Note: This has been changing lately
-
-SUGG: A version number to blocks, which increments when the block is
- modified (node add/remove, water update, lighting update)
- - This can then be used to make sure the most recent version of
- a block has been sent to client, for example
-
-SUGG: Make the amount of blocks sending to client and the total
- amount of blocks dynamically limited. Transferring blocks is the
- main network eater of this system, so it is the one that has
- to be throttled so that RTTs stay low.
-
-SUGG: Meshes of blocks could be split into 6 meshes facing into
- different directions and then only those drawn that need to be
-
-SUGG: Background music based on cellular automata?
- http://www.earslap.com/projectslab/otomata
-
-SUGG: Simple light color information to air
-
-SUGG: Server-side objects could be moved based on nodes to enable very
- lightweight operation and simple AI
- - Not practical; client would still need to show smooth movement.
-
-SUGG: Make a system for pregenerating quick information for mapblocks, so
- that the client can show them as cubes before they are actually sent
- or even generated.
-
-SUGG: Erosion simulation at map generation time
- - This might be plausible if larger areas of map were pregenerated
- without lighting (which is slow)
- - Simulate water flows, which would carve out dirt fast and
- then turn stone into gravel and sand and relocate it.
- - How about relocating minerals, too? Coal and gold in
- downstream sand and gravel would be kind of cool
- - This would need a better way of handling minerals, mainly
- to have mineral content as a separate field. the first
- parameter field is free for this.
- - Simulate rock falling from cliffs when water has removed
- enough solid rock from the bottom
-
-SUGG: For non-mapgen FarMesh: Add a per-sector database to store surface
- stuff as simple flags/values
- - Light?
- - A building?
- And at some point make the server send this data to the client too,
- instead of referring to the noise functions
- - Ground height
- - Surface ground type
- - Trees?
-
-Gaming ideas:
--------------
-
-- Aim for something like controlling a single dwarf in Dwarf Fortress
-- The player could go faster by a crafting a boat, or riding an animal
-- Random NPC traders. what else?
-
-Game content:
--------------
-
-- When furnace is destroyed, move items to player's inventory
-- Add lots of stuff
-- Glass blocks
-- Growing grass, decaying leaves
- - This can be done in the active blocks I guess.
- - Lots of stuff can be done in the active blocks.
- - Uh, is there an active block list somewhere? I think not. Add it.
-- Breaking weak structures
- - This can probably be accomplished in the same way as grass
-- Player health points
- - When player dies, throw items on map (needs better item-on-map
- implementation)
-- Cobble to get mossy if near water
-- More slots in furnace source list, so that multiple ingredients
- are possible.
-- Keys to chests?
-
-- The Treasure Guard; a big monster with a hammer
- - The hammer does great damage, shakes the ground and removes a block
- - You can drop on top of it, and have some time to attack there
- before he shakes you off
-
-- Maybe the difficulty could come from monsters getting tougher in
- far-away places, and the player starting to need something from
- there when time goes by.
- - The player would have some of that stuff at the beginning, and
- would need new supplies of it when it runs out
-
-- A bomb
-- A spread-items-on-map routine for the bomb, and for dying players
-
-- Fighting:
- - Proper sword swing simulation
- - Player should get damage from colliding to a wall at high speed
-
-Documentation:
---------------
-
-Build system / running:
------------------------
-
-Networking and serialization:
------------------------------
-
-SUGG: Fix address to be ipv6 compatible
-
-User Interface:
----------------
-
-Graphics:
----------
-
-SUGG: Combine MapBlock's face caches to so big pieces that VBO
- can be used
- - That is >500 vertices
- - This is not easy; all the MapBlocks close to the player would
- still need to be drawn separately and combining the blocks
- would have to happen in a background thread
-
-SUGG: Make fetching sector's blocks more efficient when rendering
- sectors that have very large amounts of blocks (on client)
- - Is this necessary at all?
-
-SUGG: Draw cubes in inventory directly with 3D drawing commands, so that
- animating them is easier.
-
-SUGG: Option for enabling proper alpha channel for textures
-
-TODO: Flowing water animation
-
-TODO: A setting for enabling bilinear filtering for textures
-
-TODO: Better control of draw_control.wanted_max_blocks
-
-TODO: Further investigate the use of GPU lighting in addition to the
- current one
-
-TODO: Artificial (night) light could be more yellow colored than sunlight.
- - This is technically doable.
- - Also the actual colors of the textures could be made less colorful
- in the dark but it's a bit more difficult.
-
-SUGG: Somehow make the night less colorful
-
-TODO: Occlusion culling
- - At the same time, move some of the renderMap() block choosing code
- to the same place as where the new culling happens.
- - Shoot some rays per frame and when ready, make a new list of
- blocks for usage of renderMap and give it a new pointer to it.
-
-Configuration:
---------------
-
-Client:
--------
-
-TODO: Untie client network operations from framerate
- - Needs some input queues or something
- - This won't give much performance boost because calculating block
- meshes takes so long
-
-SUGG: Make morning and evening transition more smooth and maybe shorter
-
-TODO: Don't update all meshes always on single node changes, but
- check which ones should be updated
- - implement Map::updateNodeMeshes() and the usage of it
- - It will give almost always a 4x boost in mesh update performance.
-
-- A weapon engine
-
-- Tool/weapon visualization
-
-FIXME: When disconnected to the menu, memory is not freed properly
-
-TODO: Investigate how much the mesh generator thread gets used when
- transferring map data
-
-Server:
--------
-
-SUGG: Make an option to the server to disable building and digging near
- the starting position
-
-FIXME: Server sometimes goes into some infinite PeerNotFoundException loop
-
-* Fix the problem with the server constantly saving one or a few
- blocks? List the first saved block, maybe it explains.
- - It is probably caused by oscillating water
- - TODO: Investigate if this still happens (this is a very old one)
-* Make a small history check to transformLiquids to detect and log
- continuous oscillations, in such detail that they can be fixed.
-
-FIXME: The new optimized map sending doesn't sometimes send enough blocks
- from big caves and such
-FIXME: Block send distance configuration does not take effect for some reason
-
-Environment:
-------------
-
-TODO: Add proper hooks to when adding and removing active blocks
-
-TODO: Finish the ActiveBlockModifier stuff and use it for something
-
-Objects:
---------
-
-TODO: Get rid of MapBlockObjects and use only ActiveObjects
- - Skipping the MapBlockObject data is nasty - there is no "total
- length" stored; have to make a SkipMBOs function which contains
- enough of the current code to skip them properly.
-
-SUGG: MovingObject::move and Player::move are basically the same.
- combine them.
- - NOTE: This is a bit tricky because player has the sneaking ability
- - NOTE: Player::move is more up-to-date.
- - NOTE: There is a simple move implementation now in collision.{h,cpp}
- - NOTE: MovingObject will be deleted (MapBlockObject)
-
-TODO: Add a long step function to objects that is called with the time
- difference when block activates
-
-Map:
-----
-
-TODO: Flowing water to actually contain flow direction information
- - There is a space for this - it just has to be implemented.
-
-TODO: Consider smoothening cave floors after generating them
-
-TODO: Fix make_tree, make_* to use seed-position-consistent pseudorandom
- - delta also
-
-Misc. stuff:
-------------
-TODO: Make sure server handles removing grass when a block is placed (etc)
- - The client should not do it by itself
- - NOTE: I think nobody does it currently...
-TODO: Block cube placement around player's head
-TODO: Protocol version field
-TODO: Think about using same bits for material for fences and doors, for
- example
-
-SUGG: Restart irrlicht completely when coming back to main menu from game.
- - This gets rid of everything that is stored in irrlicht's caches.
- - This might be needed for texture pack selection in menu
-
-TODO: Merge bahamada's audio stuff (clean patch available)
-
-Making it more portable:
-------------------------
-
-Stuff to do before release:
----------------------------
-
-Fixes to the current release:
------------------------------
-
-Stuff to do after release:
----------------------------
-
-Doing currently:
-----------------
-
-======================================================================
-
-*/
-
#ifdef NDEBUG
/*#ifdef _WIN32
#pragma message ("Disabling unit tests")