Hey AthenaOfDelphi are you perhaps panning in participating in Lazarus Game Contest 2018? Based on this thread I'm assuming you plan on having a retro look in your game. Right?
Hey AthenaOfDelphi are you perhaps panning in participating in Lazarus Game Contest 2018? Based on this thread I'm assuming you plan on having a retro look in your game. Right?
No, I'm not having a go at a competition... I did look at it, but if I recall correctly, you have to release sources... I'd like to make money from this endeavour, so it's closed source all the way for me right now
And yes, it is due to have a retro look... mainly text based UI for the entire game.
:: AthenaOfDelphi :: My Blog :: My Software ::
I don't want to say too much, it may never even see the light of day, but it is serving as a vehicle to refresh my coding mojo
But, I've been playing quite a bit of Factorio, Gunpoint, SpaceChem, TIS-100, Shenzhen I/O, Opus Magnum, Silicon Zeroes, Hacknet, Uplink... all of them make me think... but whilst they are all fantastic games, they kind of lack depth. Hacknet for example... once you've hacked one system, aside from the incremental difficulty which can be largely mitigated by upgraded in-game software, there's not much more to do... hack, move to next story point, hack, move to next story point. Silicon Zeroes... same, great game, but it only has a limited number of components for you to use and there is no sandbox, so it's get task, build solution, get task, build solution, with each one being harder than the last and don't get me wrong... some of the tasks are pretty evil.
As an example, I'm trying to build a solution for a 2 pipeline CPU design that has two registers... accumulator and backup... so you've got to build into the design the capability of handling things like this:- LDAC 2 SAVE 10. Which might translate to load accumulator with 2 (will be executed by pipeline 1) and save accumulator to memory location 10 (will be executed by pipeline 2). The components you have are number (a constant number), add, sub, multiply, equality, read memory, write memory, latch, registers, input selector, output selector, instruction decoder and instruction selector. What's available depends on the puzzle and you may or may not have to worry about tick limits (i.e. complete the execution of the program within a given number of clock ticks).
But essentially it's the same thing over and over and as stated, there is not sandbox so you can't just play with everything to try and make stuff because typically the puzzles have a limited selection of components.
So, with all that in mind, I'm trying to write the kind of game I want to play. If all goes to plan the action will take place in a simulated computer system complete with a BIOS and operating system. So presently I'm building the classes I need to simulate the hardware. At the same time, I need to write a cross assembler for my PC so I can write the OS for my simulated system and then set about writing some basic tools for the machine. The text rendering is part of the simulated video controller. 256 colour palette, standard ASCII character set (have PC, Atari ST and Atari 8 bit character sets) and character attributes that can specify blinking, character set and palette to use.
That's about as much as you're going to get out of me for now
:: AthenaOfDelphi :: My Blog :: My Software ::
I see you have similar taste for games like me. I was also disappointed in some of them because they lack the proper depth.
For instance I really liked Uplink but was disappointed by the fact that later game becomes more difficult simply by lowering the time that you have to hack certain computer. So I come up to idea so that there would be different OS-es on different computers where each OS would require different hacking approach.
Another thing that disappoints me in most hacking games is that when you hack to some computer you are presented with just a few folders and files. That is nothing like any real life computer. So my idea is to create this virtual file-structure and its contents based on the computer OS and the programs that are installed on them. Which programs are installed on them should depend on the intended use of such computers. So for instance a home computer would have mostly games and some multimedia programs on them. Business computers would have more document writing or some special business programs on them and so on.
Also in my idea I intent to abandon the classic hacking style seen in most hacking games or movies where you sit in front of your computer all the time and you can do just about everything from there. Instead my plan is to require gamer to go and perhaps infiltrate some organization in order to get direct access to their computers because they simply have to strong protection to be hack-able.
This idea of mine is another reason why I started working on my own UI library because I need a UI library that would allow me to develop multiple different UI-s preferably with ease.
Any way for now my idea is more or less just an idea since I haven't managed to make any of the systems it requires yet. Maybe someday in the future it becomes a reality but before that happens I may put some of my other ideas into the reality first as they are less complex and thus easier to make.
I love the ideas Athena! there was that abandoned game by notch (https://en.wikipedia.org/wiki/0x10c) that was going to incorperate a virtual machine that ran actual bytecode and I've dreamed of related concepts as I get bogged down in writing a bloody engine that can do tons of things I don't personally want to do
I'd like to offer that if you plan on some future, server/client like multiplayer?
There's things that will save you a lot of time in the future, if you think about the difficulties of synchronizing/validating the virtual machines, at this point in the design.
For example you could ensure that two virtual machines communicate over a virtual network and add an api for this virtual network into the virtual machine if you wanted internal networking.
or/in addition, you could abstract the interface between the VM and it's input/outputs eg the 'display' - this abstraction allowing for local computer, single player setups but also server/client remote rendering.
The way I understand it - the bandwidth of server/client synchronization (think anti-cheating, screen rendering) was a big sticking point for 0x10c and its scalability/performance.
Would deffo like to hear more as and when you choose to say
When the moon hits your eye like a big pizza pie - that's an extinction level impact event.
The difficulty I have with discussing it is that part of the allure I hope will be the fact that the machine has flaws in it (which also will make it difficult for me to really enjoy it because I won't have to go looking for them)... flaws that once discovered could provide attack vectors to exploit other players machines or other machines within the game world. There should also be some undocumented features that can be leveraged but not necessarily to provide an in-game advantage.
As for synchronisation... it's not going to be necessary to synchronise player computers with one another. If all goes according to plan there will be a virtual internet that hosts a mail system, manufacturer websites and bulletin board systems where you can get quests and such like. Some of these will be transient, in that they exist or are accessible for the duration of a quest. But I want one of the key elements to be exploring the hardware and what's possible with it. If a player wants to simply sit there and write games for the virtual machine... go for it
One thing I have to be certain about is that there will be no means of injecting software into the virtual world from a PC (other than via the editor I'm working on for building content). You want software that isn't available, you'll have to write it. And it won't be software like Hacknet where you have the SSH cracker and such like.
I've got a roughed out design for the CPU, video controller and MMU. One of the things I'm looking at right now is to make sure I include features to allow the OS of the machine to be pre-emptive multi-tasking, which in itself is quite a daunting prospect as I'm going to have to write the OS.... I did think about possibly just porting a Linux flavour to it but I'd have to write a C/C++ compiler for that and there's no way I'm going to do that anytime soon
Underlying tech is Delphi for all the grunt (so if I get it right and manage to separate the renderer from the OS sufficiently well, I should be able to port to MacOSX quite easily), Lua for control/quests etc. and various low level languages within the machine itself. Things like the virtual internet will probably just be one big Delphi service (possibly with a PHP plugin - although that raises security control questions since I'd effectively have to create my own flavour of PHP so it was only accessing the resources of the virtual server on which it was running - I could possibly build a system based on real virtual machines but that then limits what I can do with them unless I started introducing a deamon in the background to control them, which I'd then have to hide from things like PS etc.). It would also make recovering from problems trickier. This does mean that in game mode, it's going to be an on-line game, but Sandbox will run on-line or off-line. I'm thinking of having clear separation between play and sandbox... so software created in play mode will not be available in sandbox mode and vice versa, but on-line sandbox will probably have a bulletin board system of it's own for people to chat and exchange software etc.
It's a big undertaking and as I say, it may never come to fruition, but if I get the machine running with an operating system, editor and assembler, then I'll be chuffed to bits... the rest would be a nice bonus.
:: AthenaOfDelphi :: My Blog :: My Software ::
Bookmarks