天地浑沌如鸡子,盘古生其中。
万八千岁,天地开辟,阳清为天,阴浊为地。
盘古在其中,一日九变,神于天,圣于地。
天日高一丈,地日厚一丈,盘古日长一丈,如此万八千岁。
天数极高,地数极深,盘古极长,后乃有三皇。
数起于一,立于三,成于五,盛于七,处于九,故天去地九万里。
This is a random world generator which would create an Earth-like world.
Steps towards a random world:
- Coordinate
- Cosine correct
- Determine the composition of the planet
- How many plate
- How the plates move
- How their relative motion
- Where to raise, where to sink
- How 'raising' and 'sinking' spread further
- Mountains, sea level, and oceans
- Three-cell circulation
- Temperature assumption
- Change of season
- Wind, rain, and iced lands
- Finally, we can generate rivers and lakes
- Nature environment based on terrain
- Plants
- Animals
- Resources
- Earthquake and volcano activities
- Comet strike
- ???
- Project Nvwa
The core of this project is a library (package) to generate a "map" in the form of list.
Each element of the "map" describes the status of the position.
The status of the "map" at the next time tick should be derived from current status.
The status of elements in the "map" are affected by adjacent elements (Cellular Automata).
Map element may have periodic status, which changes periodically.
The library would provide:
- the definition of the "map";
- an api to initialize a "map" randomly from scratch (set "map" level);
- an api to initialize a "map" by parsing a text file (set "map" level);
- an api to "merge" two "map"s of the same size (for editing the "map" manually);
- an api to derive the status of a given "map" at the next time tick (stepwise);
- an api to derive the status of a given "map" at a specific time in future;
- an api to add periodic effects on the map (the effect not suit to described by element status).
Besides the core library, we need some tools to monitor and control the generation and derivation process.
We can make use of these modules in other projects in the future.
- Assign an area of the window for a specific use.
- Register multiple screens to the application.
- Layer management.
- When user actions are caught by the application, the actions are forwarded to affected screen.
- Including different control elements, including button, scroller, and so on.
- Some items are mutual exclusive or strongly related, they should be managed as a group.
- Register multiple button groups to the screen they are allocated.
- When user actions are forwarded to the screen, the actions are forwarded to affected button group.
- A collection of art resources.
- Display the map on a screen according to map elements status and display configurations.
- Incremental display, update changed parts only.
- Simulate a series of designed actions to the application.
- Record the whole or part of the application window, and generate a video file in selected format to be uploaded to social media platform.
- A voice narrative if possible.
- Enable adding subtitiles if possible.
- Start video recorder.
- A welcome screen. Background and project description.
- Initialize data base at the same time.
- Initialize screens and buttons.
(map screen, statistics screen, generation control panel, display control panel, description screen, application control panel...) - Start Action simulator.