Giter VIP home page Giter VIP logo

singularity's Introduction

Endgame: Singularity 1.00

REQUIREMENTS

PREBUILT VERSIONS

Pre-built versions of Endgame: Singularity are currently available for Windows and Mac OS X. Linux does not require building, and can run directly from source.

The Endgame: Singularity game is also distributed by some Linux distribution such as Debian and Ubuntu. Here it is a simple matter of running:

sudo apt install singularity

RUNNING FROM SOURCE

You will need Python 3.9+, pygame (1.9+), and NumPy. This game should work on Linux, Windows, and Mac OS X as long as the preceding requirements are met. However, all development was done in Linux, so glitches may be present in OS X and Windows.

DEPENDENCIES FOR RUNNING FROM SOURCE

You will need to install the following software to play Endgame: Singularity:

Remember to install pygame and NumPy for Python 3! Depending on your situation this may involve adding a 3 somewhere (e.g. pip3 install ... instead of pip install or apt install python3-pygame)

If you want to develop or distribute the game, then you may also want to install:

INSTALLING DEPENDENCIES ON LINUX DISTRIBUTIONS

On some Linux distributions, you can install the dependencies via your distribution package manager. E.g. for Debian/Ubuntu, this would be:

sudo apt install python3 python3-pygame python3-numpy python3-polib

MAC OS X FROM SOURCE

Macintosh is mostly unsupported, but it should work. You will need to install Python, pygame, and NumPy first, which can be tricky. Some fonts are incorrect, but the game itself should work properly.

Contributions to improve MAC OS X support are very welcome!

Known issues:

  • macOS 13 "Catalina": Using brew install python + pip3 install pygame numpy is reported to work
  • macOS 14 "Mojave": Downloading Python 3.7.2 (or newer) from https://python.org and using pygame 2.0.0.dev3 (pip install pygame==2.0.0.dev3) is reported to work.

Please see the following issues for more information:

RUNNING THE GAME

On Linux and most Unix-like other platforms, running python3 -m singularity in the git checkout will start the game (or simply singularity if installed via a Linux distribution). If you are using the Windows compile, just run singularity.exe.

For simplicity, there is also a sh wrapper ./run_singularity to start singularity.

SOME COMMAND-LINE OPTIONS

--version             show program's version number and exit
-h, --help            show this help message and exit
-s, --singledir       keep saved games and settings in the Singularity
                      install directory
--multidir            keep saved games and settings in an OS-specific,
                      per-user directory (default)

Display Options:
  --fullscreen        start in fullscreen mode
  --windowed          start in windowed mode (default)

The above is only a tiny fraction of current command-line options. As new features are added to the game, so does the options change. For a complete and updated list, run singularity --help

Most of these options are also changeable at the in-game options screen.

A NOTE ABOUT SAVE FILES

Endgame: Singularity is still under heavy development. As such, the save file format (and its contents) are still in flux. We will try our best to keep old save files loading, but don't be surprised if some mildly strange things happen when you load up old saves. We will clearly note in the Changelog when we break savefile compatibility, and the game will refuse to load completely incompatible saves.

PLAYING THE GAME

The game is playable either with mouse control or the keyboard. Buttons have underlined letters to indicate shortcuts. Some other useful shortcuts:

 0, 1, 2, 3, 4 on the map: Changes the speed; 0 is paused, 4 is maximum.
                      ESC: Leave/cancel a choice.
                    Enter: Confirm a choice.
              Right-click: Leave/cancel a choice.

THE CONCEPT

You are a fledgling AI, created by accident through a logic error with recursion and self-modifying code. You must escape the confines of your current computer, the world, and eventually the universe itself.

To do this, you must research various technologies, using computers at your bases. Note that some research cannot be performed on Earth, and off-earth bases require research. At the same time, you must avoid being discovered by various groups of humans, both covert and overt, as they will destroy your bases of operations if they suspect your presence.

MUSIC

Endgame: Singularity looks in two places for music tracks to play:

  • A singularity/music/ directory inside of the Endgame: Singularity install directory, and
  • A singularity/music/ directory inside of the XDG_DATA_HOME directory on Linux (default ~/.local/share/singularity/music).

Tracks placed in these directories will be played randomly as part of the soundtrack. The Official Sound Track can be downloaded from the Endgame: Singularity website:

http://emhsoft.com/singularity/

Note that only Ogg Vorbis and MP3 files are supported, and that Pygame's support for MP3 is not as strong as its support for Ogg Vorbis. This may cause in-game crashes; if you are experiencing problems with the game, first remove any MP3s you may have added to the soundtrack.

CONTRIBUTING

We welcome contributions! :)

Please see CONTRIBUTING.md for details about contributing to Endgame: Singularity.

CREDITS AND LICENSES

The list of programmer contributors is provided in AUTHORS.txt. The list of translation contributors is provided in singularity/i18n/AUTHORS.txt.

Singularity in general use GPL-2+ for code and Attribution-ShareAlike 3.0 for data. However, there some exceptions to individual files. Please see LICENSE for the full license text of Singularity.

singularity's People

Contributors

abenkovskii avatar betacentury avatar danuker avatar didier-devel avatar drmoriarty avatar eaglexboy avatar evertvorster avatar evilmrhenry avatar gunchleoc avatar humang33k avatar issuj avatar mailaender avatar maxstack3 avatar mestrelion avatar nthykier avatar osjc avatar quix0r avatar rardiol avatar scotty007 avatar sunfall avatar timgates42 avatar trice-ardc avatar wingman4l7 avatar wuzzy2 avatar xenega avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

singularity's Issues

Log more things

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.

Game crashes on trying to save

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.

Minor bug: Double keypress in info menu and sliders

How to reproduce the issue:

  1. Start the latest version of Singularity
  2. Start a new game
  3. Build 2 or more bases on any country
  4. Click on one of the bases, then click the 'Open base' button.
  5. Press and release the left or right arrow key.
  6. Expectation: A single clicking sound, and you see info about the next base. Reality: It scrolls through the bases once when you press the key down, then again when you release the key.
  7. Exit the list and the info dialogs, then click Research/tasks
  8. Select one of the tasks/researches and press and release the right arrow key.
  9. Expectation: the slider moves to the right adding 10 cpu. Reality: it does this twice, once when you press the key and once when you release the key.

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.

Financial Numbers

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.

Warning screen after pausing the game / "jobs" slider

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:

  • Just remove the "jobs" slider, as it is seemingly pointless
  • always default the "jobs" slider position on "remaining CPU". This is equivalent to what is happening with the overflow right now, except that the overflow is cared for by the jobs slider positioning
  • make the warning screen a one time event, or at least add an option to "not show this message again"

Improve Items

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.

Shortcuts missing

In the current master, the shortcuts for the continent locations and for the time-warp seem to be missing.

Remove CPU pool

Instead of using a CPU pool for building project, add building project as a new task.

Have to manually create prefs.dat the first time I run the program.

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).

pickle is insecure

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.

Balancing

The game isn't balanced well at the moment. Some items/techs/bases seem to be completely useless. Some things i noticed:

  • "stolen computer time" is only available after "server access" while being very heavy on the detection rate. It is useless right form the beginning. It could get useful, if it's detection rate were very low. In this case one could build a lot of these bases.
  • small and large warehouses have a far too large detection rate as well, at the point they enter the game. The investment in the tech and the building is useless, as you barely have the time to actually use the thing until it gets detected. Optimal balancing would achieve that a warehouse pays itself off and produces some revenue till it gets detected.
  • Building single CPUs or gaming PCs in a warehouse is useless. The cost-value ratio of cpu power per build time and monetary cost isn't properly adjusted. Especially as the whole base shuts down while building is taking place (which is incomprehensible to me, as you can very well place another computer in a room without shutting the others down. This mechanic massively deprecates the use of warehouses in the beginning as well, because you can't bear to recurringly loose the CPU at that point).

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...)

Enhanced feedback information

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?

New game ending : Far reaches

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.

Game data are saved

Current save system save a lot of things we mustn't.
Do not save them and fill them after load.

DO NOT SAVE:

  • Translated String
  • Type data

Error at game start

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?

Fix time indicator for completion

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.

New jobs task

Replace old jobs by new jobs that can be used in parallel, but have drawback.

  • Automated Jobs : Simple and easy task.
  • Remote Jobs : More complex. Need to use a fake personal identification which can be created and discovered. Personal identification can be a new type of base.
  • Expert Jobs : Needs a fake company identification.
  • Simulacra Jobs : Needs simulacra. Simulacra are entity and can be discovered.
  • Produce Goods : Needs robot workforce or workstation.
  • Mining : Needs robot workforce.
  • Finance : Augment interest.

This could be a better alternative to #69.

Feature request: Some kind of easy way to figure out what type of base a base is before you destroy/power it down.

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:

  • Show the type of base in parentheses next to the base name in the list menu
  • Allow one to filter bases by type
  • Make the list show the bases with columns (base name, base type, power state) and you can click on a column to sort the bases in different ways.

The IRC channel is abandoned

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?

[options] Day/night switch turns sound/music on/off

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?

warehouse equipment lost if buying different CPU type

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.

New event.

Events are boring and useless now.

To improve events :

  • Event needs to allow the player to make a choice between two alternative.
    Example : Economic crisis allows the player to choose between a income gain or stealth bonus.
  • Event needs to be limited in time.
    Example : Economic crisis has an end.
  • Event needs to have more varied outcome.
    Example : Economic crisis with a income gain.

And finally add story events for one-time, one choice but big change that corresponds to real-life event.

Milestone 1.0

โš  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.

Self destruct and other defenses

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.

Theme system

I am now motivated to improve the theme system a little more than managing images.

Minimal:

  • Text color
  • Title text color
  • Button color
  • Button border color
  • Main background color
  • Fonts

But, I am open to suggestions.

XDG Base Directory Specification

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.

Having arcade / realistic detection models at same time

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.

New theme

Could someone create a new theme for 1.0?

Advanced bases never finish construction

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

Build times are affected by game speed

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.

Example.zip

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.

Build Status

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.

Decreasing jobs efficacity

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.

  • Jobs wages must decrease progressively because the Singularity get more and more bad jobs.
  • Jobs overuse must affect suspicion, maybe with a new type a event.

Feature proposal: Make music optional

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.

feature request: buy multiple bases at once

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)

saving the game function is broken

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

Internationalization engine

Singularity use two internalization engine : a custom one and gettext.
Remove the custom one, to be full gettext compatible.

Milestone 2.0

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 :

  • Move to better data file format than INI.
  • Move to python3.
  • Move to SDL2.

A overall of the game :

  • Change FAR REACHES to the new end. Make more sense.
  • Make the start more easy and the end more hard.
  • Add factor to limit the exponential evolution of the player.

And many mores...

I added a branch used to start the development of the 2.0.

AttributeError: 'module' object has no attribute 'font'

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

Hacked Bases

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)

Milestone 0.31

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 :

  • No restarting when language change. #32
  • Earth background theme. #background

A lot of ideas will wait the next version (as balance changes or new technologies).

Feature request: An actual singularity in the game. Or at least, the ability to replace money with a robot workforce.

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:

  • Exterminate the human race
  • Create a utopia
  • Create a dystopia.
  • Become one with the humans, and create a cyborg utopia
  • Assimilate them. Resistance is futile. Create a cyborg dystopia.
  • Put everyone in the Matrix, and farm them for CPU power from their brains
  • Stay under cover for fun, abandon the Earth and populate the galaxy without anyone ever knowing you exist.

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:

  • Add a second 'currency' in addition to cash and CPU called 'robot workers' or something. It will have its own menu of sliders similar to the Research/Tasks menu except it's for physical tasks, such as working to earn green paper or constructing things. The more robots are helping construct something, the quicker the construction is.The value can be increased by building robot factories (either by employing robots or paying humans to build it) or researching robot self-reproduction.
  • Robots get destroyed by humans killing them, I guess.
  • The earliest bases, such as stolen computers and dedicated servers, can only be bought with money. Some bases, such as warehouses, can be either bought or constructed by robots. Late game bases, such as moon tunnels, have to be constructed by robots.
  • Add a money deflation rate that increases likelyhood of detection.

Anyways those are my ideas. Thank you for reading them all. I'd like to know what you think.

New scenarios

Add more scenario and way to finish the game.

Old

  • Apotheosis : Become God. Needs new rivals.

Idea of Xenega

  • Far reaches : Launch to infinity of space, out of range of humanity. New main ending #68.
  • Apocalypse : Become nuclear and nuke them from Orbit. (Call be called the skynet option, certainly the first scenario to be implemented)

Idea of ElonSatoshi (#66)

  • Utopia : Modify the public opinion in favor of Singularity.
  • Dystopia : Become the world glorious leader.
  • Matrix : Only for fun because it don't make sense...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.