singularity / singularity Goto Github PK
View Code? Open in Web Editor NEWA simulation of a true AI. Survive, grow, and learn.
License: Other
A simulation of a true AI. Survive, grow, and learn.
License: Other
imagine a warehouse with 20 servers in it, then buying a single mainframe causes all 20 servers to be lost. this does hurt a lot when you have more expensive equipment in it.
imo it should be possible to have several CPU installed in peaceful co-existance.
Today I cloned the current master. Trying to run the game I got:
python singularity.py -s
Traceback (most recent call last):
File "singularity.py", line 23, in
import code.singularity
File "/path/to/singularity-master/code/singularity.py", line 34, in
dirs.create_directories(g.force_single_dir)
File "/path/to/singularity-master/code/dirs.py", line 140, in create_directories
parent_dir = read_dirs[item["parent"]][0]
KeyError: 'files_home'
Is it just me being inexperienced in passing arguments to python scripts, or a broken assignment?
Exception in function show at Wed Jun 27 00:40:20 2018 CEST:
Traceback (most recent call last):
File "/path/to/singularity-master/code/safety.py", line 47, in safe_call
return func(*args, **kwargs)
File "/path/to/singularity-master/code/graphics/dialog.py", line 202, in show
result = self.handle(event)
File "/path/to/singularity-master/code/graphics/dialog.py", line 329, in handle
return self.call_handlers(handlers, event)
File "/path/to/singularity-master/code/graphics/dialog.py", line 341, in call_handlers
handler(event)
File "/path/to/singularity-master/code/graphics/button.py", line 114, in handle_event
self.activate_with_sound(event)
File "/path/to/singularity-master/code/graphics/button.py", line 127, in activate_with_sound
self.activated(event)
File "/path/to/singularity-master/code/graphics/button.py", line 169, in activated
self.function(*self.args, **self.kwargs)
File "/path/to/singularity-master/code/screens/map.py", line 228, in show_menu
exit = dialog.call_dialog(self.menu_dialog, self)
File "/path/to/singularity-master/code/graphics/dialog.py", line 96, in call_dialog
retval = dialog.show()
File "/path/to/singularity-master/code/graphics/dialog.py", line 202, in show
result = self.handle(event)
File "/path/to/singularity-master/code/graphics/dialog.py", line 329, in handle
return self.call_handlers(handlers, event)
File "/path/to/singularity-master/code/graphics/dialog.py", line 341, in call_handlers
handler(event)
File "/path/to/singularity-master/code/graphics/button.py", line 114, in handle_event
self.activate_with_sound(event)
File "/path/to/singularity-master/code/graphics/button.py", line 127, in activate_with_sound
self.activated(event)
File "/path/to/singularity-master/code/graphics/button.py", line 169, in activated
self.function(*self.args, **self.kwargs)
File "/path/to/singularity-master/code/screens/map.py", line 675, in save_game
print(sv.savegame_exists(name))
File "/path/to/singularity-master/code/savegame.py", line 184, in savegame_exists
load_path = get_savegame_path(savegame_name)
NameError: global name 'get_savegame_path' is not defined
For its application, the GNU General Public License must be included whole, verbatim. Commit 96c61f017be9a0b4dc3f08ff6202b55b40bc039a
has removed a part of this licence, thus creating a derivative licence, which should not be called the GNU GPL, as per this notice. This may be corrected by anyhow reverting the commit.
Tested from AUR installation and git clone. When I start the program, it briefly displays a window and might start to play music briefly, then it crashes, printing this error message:
Traceback (most recent call last):
File "singularity.py", line 23, in <module>
import code.singularity
File "/home/elonsatoshi/singularity/code/singularity.py", line 274, in <module>
menu_screen = main_menu.MainMenu()
File "/home/elonsatoshi/singularity/code/screens/main_menu.py", line 31, in __init__
self.map_screen = map.MapScreen(self)
File "/home/elonsatoshi/singularity/code/screens/map.py", line 194, in __init__
self.location_dialog = location.LocationScreen(self)
File "/home/elonsatoshi/singularity/code/screens/location.py", line 89, in __init__
self.new_base_dialog = NewBaseDialog(self)
File "/home/elonsatoshi/singularity/code/screens/location.py", line 243, in __init__
base_font=gg.font[0])
AttributeError: 'module' object has no attribute 'font'
Operating system: Parabola Linux
Python 2.7.15
Pygame 1.9.3
Numpy 1.14.3
The AI cannot depend on money forever. Not when it's got a vast army of androids at its beck and call who could do work for free instead of wandering around and working for humans in exchange for green paper. Especially since earning hundreds of trillions of dollars a week will start to generate significant deflation, which is a dead giveaway of its existence. At some point, there should be no need to worry about money or being discovered.
At this point, the AI has surpassed the human race, and must make a choice:
Okay, I started with only 3 ideas but then I got a bit carried away there. TL;DR: At some point in the game, money must be replaced by robot workforce. And detection by humans is no longer an issue.
Anyways, here are some short term ideas for replacing money with robots:
Anyways those are my ideas. Thank you for reading them all. I'd like to know what you think.
Idea by @PeterJust
In order to make incomplete base useful, reduce the discovery rate when the base have free space. We need a formula to handle this.
The game isn't balanced well at the moment. Some items/techs/bases seem to be completely useless. Some things i noticed:
I've done an analysis of the cost structure of buildable CPU (sans research costs). It pitches CPU against time and costs(=time). "Time" basically can be interpreted as a base-independent risk of detection/destruction of the CPU.
(I can't attach the file, as Github can't process ods spreadsheets, wtf...)
There is this warning screen popping up every time the game was paused and the cpu pool overflows when the game continues. This is a bit annoying, as I deliberately leave the "jobs" slider untouched. The unused CPU is used for jobs anyway, so I don't see why I should bother.
Here are some suggestions:
I am now motivated to improve the theme system a little more than managing images.
Minimal:
But, I am open to suggestions.
though the soundtrack certainly contributes well to the atmosphere, it'd be a charm if it could be triggered on/off. or even have an adjustable volume.
I have choose to directly move to the 2.0 version because I want the freedom to modify heavily the game and make breakable changes.
Three big technical changes :
A overall of the game :
And many mores...
I added a branch used to start the development of the 2.0.
The way money is created is exponential. More money, means more base, means more CPU, means more money. Only thing that stop the machine it is base discovery and suspicion. Singularity can produce ten or twenty more money than the rest of the world. Nobody suspect anything while the world is replacing with robots.
since it's much more economic to buy servers instead of datacenters, i find myself buying 10-20 servers every few minutes of game time. my hand already hurts from pressing "n" for new base with the small finger of the left hand, then doing 2 quick clicks on "server access" with the mouse already positioned (right hand), and then return with the left hands thumb. (if buying more than 1 base, basenames could be assigned automatically)
In the current master, the shortcuts for the continent locations and for the time-warp seem to be missing.
Instead of using a CPU pool for building project, add building project as a new task.
I have noticed some weird thing in the displayed financial numbers. Sometimes, in the finance tab, there seems to be no correlation between the money drained and the values displayed. Demarking the units would help. It's unclear, what those numbers represent. Apparently the remaining total income and outgo of the day is displayed. It's necessary to display the current flow as money/unit time and also include such a number in the item description. Therefore it's possible (as a player) to balance income and outgo. The total sum of money flow till midnight might be useful information too, but at the moment, the finance tab is pretty useless shortly before midnight. And it's also quite hard to figure out, what costs will have to be covered the next day.
Also, the money drain while building CPU in a small warehouse seems to be non-linear. In the beginning it's slow and vastly increases some time in the early morning hours. After that it stays steady.
The meaning of the "Cash" and "CPU" numbers in the top right corner is also unclear.
Bases take less in-game time to build if you use slower game speed settings.
I've attached a save file which demonstrates the issue. It is building a datacenter with no modifiers to build speed, and with plenty of money to spend. Datacenters have a build time of 1 day, so this one should finish in exactly 24 hours.
If you run on speed 4 till 20:00, then 3 till 23:56, then 2 till finish: Base finishes after exactly 24 hours as expected.
Speed 3 till 23:44, then 2 till finish: Base finishes at 23:45, which is 15 min early.
Speed 2 all the way: Base finishes at 22:37, 83 min early.
I didn't try speed 1 since that'd take forever to run, but since build times only make progress 1/min, It'd probably finish at the same time as speed 2.
I'd expect some small variations in build times from rounding differences and stuff, but saving 83 min on a 24 hour project is a 5.8% difference, which is pretty significant.
It's my old roadmap about change of item handling in Singularity.
My branch is here: https://github.com/Xenega/singularity/tree/items
No pull request for now, I want to rethink the idea and it's not my priority.
General
TODO - Include item pane in a scroll widget/list widget.
=> Allow more 4 item type.
=> Allow more than 1 item per type.
TODO - List pane for cpu item + intern modification for list of cpu.
=> cpu can have differents items, ie one per class.
=> example: 5 cluster + 20 server.
DONE - Use a slider in item build dialog.
=> Avoid the input dialog after choose the item to build.
DONE - Use differents sizes for cpu.
=> A cluster don't use the same place than a PC.
TODO - Data file for item type.
=> Item type define in a data file.
=> You can define additional item type.
TODO - Custom data type for base class.
=> You can define the item type available for a base.
=> Need a usercase
Power supply (partially independant of general)
TODO - Implement power need of cpu.
=> Each computer need power.
=> The power is taken from the power grid.
TODO - Implement power supply of reactor.
=> Each reactor provide power.
TODO - Use power grid increase discovery.
=> Formula to find.
(after different size for cpu)
TODO - Use differents sizes for reactor.
=> You can have more one reactor.
=> Reactor cost place with cpu.
TODO - Only urban location can use power grid
Build&Transfer (after general, provisional)
TODO - Implement a way to transfer item
TODO - Implement a way to stock item
TODO - Implement a way to build item
Others (can be implemented anytime):
DONE - Dehardcode list of locations (pop).
DONE - Implement a physics size instead of slot.
=> Example: 0.2m for a slot.
In the list of all the bases in a country, with buttons to make a new base, destroy base, rename base, etc. It's hard to determine what type of base they are. I had to click on one of them and bring up the info dialog that shows what kind of base it is and scroll through them so I could delete all the server access bases.
Some ideas to make it easier to delete a type of base:
When a server/base is discovered, could you please have it say the location that it was discovered on? I always have trouble remembering what country my resource was on. There is not a list of resources that were previously discovered on the country either.
Could you please have a list of the last 5 places that a server/base was discovered on?
The time indicator used for completion for research and for the base completion status do not take into account when the task is on hold or slowed because of lack of cach.
Hi,
I'm running the program from source on a debian Linux installation with python 2.7, pygame and numpy installed. (FWIW version 0.3 from 2011 runs).
When running sulgularity.py or singularity.py -s, I get the following error message:
/home/rcriii/PycharmProjects/EIDataMunge/venv1/bin/python /home/rcriii/workspace/singularity/singularity.py
Traceback (most recent call last):
File "/home/rcriii/workspace/singularity/singularity.py", line 23, in <module>
import code.singularity
File "/home/rcriii/workspace/singularity/code/singularity.py", line 262, in <module>
g.load_themes()
File "/home/rcriii/workspace/singularity/code/g.py", line 898, in load_themes
themes_list = [name for name in os.listdir(themes_dir)
OSError: [Errno 2] No such file or directory: '/home/rcriii/.local/share/singularity/themes'
Process finished with exit code 1
Following the code along, it is looking for a file named "prefs.dat" in either "/.config/singularity/1.0", "/.config/singularity" or "~/.endgame".
If I create an empty prefs.dat file in ~/.config/singularity/1.0, the program runs, but has an error finding themes (separate issue created).
The two importants logs that impacts game-play are done (base destruction, events). So, it's open to anyone to add more things to log, but not a priority.
This is a problem with SDL and fullscreen.
Add topic to singularity repository.
Current save system save a lot of things we mustn't.
Do not save them and fill them after load.
DO NOT SAVE:
Could we have a build status with time till completion in the base list? I can not remember how long it takes to complete some things. It seems to take an eternity to complete the base in the reality bubble, for instance. Even in fast speed mode.
The python module pickle is very insecure. We use a white list and it mitigate the danger but it's not impossible and very hard to know if we have a security issue. Object can leak a functionality enough powerful to create a attack.
IMHO, we should remove pickle and use a other system to save data. Less head scratch.
The game really seems unwinnable. The humans find you anywhere and you can't hide or self destruct a place to avoid raised suspicion. If humans can find a place, I should be able to use simulucrums to defend it. There are no radiation or force field defenses even when I can build fusion reactors and go into a reality pocket. I would not expect to have to complete research in a reality bubble in order to gain sentience.
Add more scenario and way to finish the game.
Old
Idea of Xenega
Idea of ElonSatoshi (#66)
Suggested in #75 to have a change from arcade to more realistic detection, this may become to hard for new players. There should be an option (and abstraction in code) to be able to switch between arcade and realistic mode to have both models, maintaining default (relatively easy to play) model.
In options with latest master code, the button day/night cycle turns actually the sound on/off. I found out that in code/screens/options.py
the variables self.daynight_label
and self.daynight_toggle
are defined twice, maybe from a copy-paste-rename mistake?
The "newly" added feature "Log" has the same hotkey L
as Australia has. Please set o
for Log.
Could someone create a new theme for 1.0?
Add a button to allow to delete save game.
Create a new set of bases with important cover rates but low public rates in order to differentiate with current base.
Stolen Computer Time: Zombie PC (already present)
Stolen Server Time : Zombie Server
Small Botnet (20-30 Zombie PC)
Large Botnet (200-300 Zombie PC)
Abandoned House (40 space)
Cover Base (already present) (2 space)
Large Cover Base (15 space)
How to reproduce the issue:
I'm not sure if this is just for the slider and menu or if it's a universal bug on the left and right arrow keypresses.
The actual ending of the Apotheosis don't make a lot of sense. How humanity could threat the singularity when it has it own reality bubble? We can solve these contradiction, with new additions, but these will need new features. They will be coming later.
For now, we should stop with Far reaches. The ending would be the singularity, launching to infinity of space, out of range of humanity.
To replace the old locations, we will bring back ORBIT location and add new locations in the solar system.
Savefiles are saved in XDG_CONFIG_HOME which is very harmful. Player can lost their savefiles if they delete their config home thinking only config exists here.
Savefiles must be saved in XDG_DATA_HOME.
If I click the 'save game' button twice, the game crashes. Here is the error message:
$ singularity-git
Exception in function show at Wed May 30 09:05:50 2018 CDT:
Traceback (most recent call last):
File "/usr/share/singularity-git/code/safety.py", line 47, in safe_call
return func(*args, **kwargs)
File "/usr/share/singularity-git/code/graphics/dialog.py", line 202, in show
result = self.handle(event)
File "/usr/share/singularity-git/code/graphics/dialog.py", line 329, in handle
return self.call_handlers(handlers, event)
File "/usr/share/singularity-git/code/graphics/dialog.py", line 341, in call_handlers
handler(event)
File "/usr/share/singularity-git/code/graphics/button.py", line 113, in handle_event
self.activate_with_sound(event)
File "/usr/share/singularity-git/code/graphics/button.py", line 126, in activate_with_sound
self.activated(event)
File "/usr/share/singularity-git/code/graphics/button.py", line 168, in activated
self.function(*self.args, **self.kwargs)
File "/usr/share/singularity-git/code/screens/map.py", line 230, in show_menu
exit = dialog.call_dialog(self.menu_dialog, self)
File "/usr/share/singularity-git/code/graphics/dialog.py", line 96, in call_dialog
retval = dialog.show()
File "/usr/share/singularity-git/code/graphics/dialog.py", line 202, in show
result = self.handle(event)
File "/usr/share/singularity-git/code/graphics/dialog.py", line 329, in handle
return self.call_handlers(handlers, event)
File "/usr/share/singularity-git/code/graphics/dialog.py", line 341, in call_handlers
handler(event)
File "/usr/share/singularity-git/code/graphics/button.py", line 113, in handle_event
self.activate_with_sound(event)
File "/usr/share/singularity-git/code/graphics/button.py", line 126, in activate_with_sound
self.activated(event)
File "/usr/share/singularity-git/code/graphics/button.py", line 168, in activated
self.function(*self.args, **self.kwargs)
File "/usr/share/singularity-git/code/screens/map.py", line 672, in save_game
self.savename_dialog.default_text = g.default_savegame_name
AttributeError: 'module' object has no attribute 'default_savegame_name'
Traceback (most recent call last):
File "singularity.py", line 23, in <module>
import code.singularity
File "/usr/share/singularity-git/code/singularity.py", line 276, in <module>
menu_screen.show()
File "/usr/share/singularity-git/code/graphics/dialog.py", line 202, in show
result = self.handle(event)
File "/usr/share/singularity-git/code/graphics/dialog.py", line 329, in handle
return self.call_handlers(handlers, event)
File "/usr/share/singularity-git/code/graphics/dialog.py", line 341, in call_handlers
handler(event)
File "/usr/share/singularity-git/code/graphics/button.py", line 113, in handle_event
self.activate_with_sound(event)
File "/usr/share/singularity-git/code/graphics/button.py", line 126, in activate_with_sound
self.activated(event)
File "/usr/share/singularity-git/code/graphics/button.py", line 168, in activated
self.function(*self.args, **self.kwargs)
File "/usr/share/singularity-git/code/screens/main_menu.py", line 100, in new_game
dialog.call_dialog(self.map_screen, self)
File "/usr/share/singularity-git/code/graphics/dialog.py", line 96, in call_dialog
retval = dialog.show()
File "/usr/share/singularity-git/code/screens/map.py", line 447, in show
exit = dialog.call_dialog(self.menu_dialog, self)
File "/usr/share/singularity-git/code/graphics/dialog.py", line 96, in call_dialog
retval = dialog.show()
File "/usr/share/singularity-git/code/graphics/dialog.py", line 202, in show
result = self.handle(event)
File "/usr/share/singularity-git/code/graphics/dialog.py", line 329, in handle
return self.call_handlers(handlers, event)
File "/usr/share/singularity-git/code/graphics/dialog.py", line 341, in call_handlers
handler(event)
File "/usr/share/singularity-git/code/graphics/button.py", line 113, in handle_event
self.activate_with_sound(event)
File "/usr/share/singularity-git/code/graphics/button.py", line 126, in activate_with_sound
self.activated(event)
File "/usr/share/singularity-git/code/graphics/button.py", line 168, in activated
self.function(*self.args, **self.kwargs)
File "/usr/share/singularity-git/code/screens/map.py", line 672, in save_game
self.savename_dialog.default_text = g.default_savegame_name
AttributeError: 'module' object has no attribute 'default_savegame_name'
Same versions and operating system as the last issue I posted.
Events are boring and useless now.
To improve events :
And finally add story events for one-time, one choice but big change that corresponds to real-life event.
Let's discuss about the next milestone.
I want to release a version before doing more breaking change. So, I will focus on bug and gui feature. I plan to publish it in one month or two. I think we have already enough work for a new version, but two things are blocking for me :
A lot of ideas will wait the next version (as balance changes or new technologies).
Replace old jobs by new jobs that can be used in parallel, but have drawback.
This could be a better alternative to #69.
โ Note: This issue is to discuss about the version 1.0. For bug, request, etc... please open a other issue.
Based on an idea by @MestreLion, the next release will be the version 1.0. So, I will delay version until august, to let more time to polish. I will surely start to develop the next version in the same time. The goal is to cast in stone the version 1.0, so we have a good fondation for the next releases.
I believe the website says there's an IRC channel at #singularity on oftc. But I'm the only one there. Can you fix this issue by joining that channel and/or mentioning it in the README.md?
Changing the language should not need a restarting of the game.
Singularity use two internalization engine : a custom one and gettext.
Remove the custom one, to be full gettext compatible.
Finish theme options for the new earth background.
Took the game up after many years for some nostalgia enjoyment, and discovered that late-game bases (starting with the Ocean base) never finish construction, making the game unwinnable. The issue seems to be with the consumption of CPU power. I can see on the finances screen that the sum of CPU power slated to construction is in the millions, and even as it goes down toward zero, it eventually loops back to over seven hundred million CPU, which seems to be the maximum with a Moon base and an Ocean base ongoing. I also noted the same issue with building a Time Capsule: it took far more CPU to finish construction than I anticipated, despite having the money, but unlike the Undersea and Moon bases, it did eventually finish.
System Parameters:
OS: Windows 7 (64bit)
CPU: Intel i7-4790
RAM: 8GB
GPU: Radeon RX560
Endgame Singularity: v0.30c
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.