Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

 
Advanced search

1395993 Posts in 67324 Topics- by 60456 Members - Latest Member: Mersy

October 19, 2021, 05:23:59 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsNetspectre – cyberpunk hacking roguelike
Pages: [1]
Print
Author Topic: Netspectre – cyberpunk hacking roguelike  (Read 1765 times)
mz-one
Level 0
**



View Profile
« on: February 20, 2021, 12:49:49 PM »

– Wake up and smell the energy drink, it's cyberpunk hacking time –



Hey guys! I wanted to start talking to you about the game that we've been making. It's called Netspectre and it's a cyberpunk hacking roguelike. The vision is to make you feel like a hacker in an evocative, thought-provoking, futuristic world. You'll hack into networks, build the best computer rig to punch through their security, and have to make all the other decisions coming with the daily life in the megacity. You will feel smart, excited, and amazed. It's going to be great.

[[ running ]]

The principal mechanic of the game is hacking into procedurally generated networks. The hacking is metaphorical: a mix of basic math, understanding the interlocking mechanics, and making decisions with incomplete information. Running happens in real-time; usually you have as much time as you need to read the situation, but sometimes the security applies more time pressure and you have to pick up the pace.



[[ deck ]]

Inbetween the runs, the game returns to its narrative layer, where you can use the rewards from the successful contracts to improve your deck for the next run. That means primarily scouting the market for components synergising the best with the build that you're going for, whether that's kernels, memcards, various chips, or the actual programs that you'll then have at your disposal during the runs.



[[ narrative ]]

We're putting a lot of effort into our worldbuilding, which we want to show through the random events. The events offer you that special narrative spice such as rare contracts with unique rewards, suspicious trade deals, opportunities to optimise your equipment, and so on. Over time, we want you to be able to put enough of the narration fragments together to start imagining the larger universe that the game takes place in.



[[ vfx/sfx ]]

We want to visualise the elements in the network run through an abstract, geometric, procedurally-generated extravaganza. For the narrative layer of the game, we want to illustrate the events through atmospheric illustrations. We're also focusing a lot on dynamically adapting the music during the run to the current situation.



[[ who is this, again? ]]

We're a squad of about five or six people in Czech Republic that formed a team just to bring this particular project that we love to life.

[[ tech ]]

Netspectre is developed with LÖVE <3.

[[ status ]]

Everything you see above is just from our preproduction prototype. We focused mainly on nailing down the mechanics, so the visuals are obviously super crude. We're now about a year deep into actual production, and I estimate that we'll need at least another two years to release. Then again, that's what I thought a year ago, too ,)

[[ devlog ]]

I want to start this devlog in order to start gathering useful critic, so definitely please do come forward with any thoughts, opinions, or questions. I'll post from time to time either to expand on various aspects of the game, or to provide updates on our progress.
« Last Edit: May 03, 2021, 10:09:30 AM by mz-one » Logged

Netspectre: CYBERPUNK || HACKING || ROGUELIKE || [devlog] // [twitterino]
Lares Yamoir
Level 0
***


View Profile WWW
« Reply #1 on: February 20, 2021, 11:06:05 PM »

Screenshots look interesting. Keep it up!
Logged

bram_dingelstad
Level 0
***


Always up for a chat!


View Profile WWW
« Reply #2 on: February 21, 2021, 07:02:04 AM »

Seems like an interesting concept, would love to see how you guys will nail the gameplay and how the deck loaded/building will work.

Best of luck!
Logged

If you'd like to see something of my work check out:
The devlogs of the game I'm working on - My website/blog - My itch.io
mz-one
Level 0
**



View Profile
« Reply #3 on: February 28, 2021, 09:43:03 AM »

Thank you very much for your encouragements!

To kick things off, I want to show a short gameplay video from the preproduction prototype and introduce some of the basic mechanics:





Now to break it down and explain a few of the things in that video:

Start – For each new playthrough, we want the player to be able to set up their background. The design in the video is simple: you can pick and choose from any number of fragments such as 'Rainy day fund: Start with +X credits' or 'Damaged heuristics: +X% trap stealth mechanics', each of which either spends or provides karma points, depending on whether it makes the playthrough easier or harder. If you choose to pick more penalties than bonuses, you're considered playing on a harder difficulty, and vice versa: basically a build-your-own difficulty system. Each backstory, except for the first few bonuses, has to be unlocked first: bonuses unlock through using their relevant mechanics, e.g. the Ghost backstory unlocks through evading enough traces, across playthroughs, and penalties unlock for winning the game for the first time:



(We're just redesigning this to a new system, which seems like a good topic for one of the future posts.)

Workbench – At about 0:20 in the video, you can see the workbench screen. This is where you construct your deck inbetween the contracts. The basic idea here is that the slots in the top half of the screen represent hardware components: a kernel, a memcard, and several ACEX chips, which usually provide various passive bonuses, while the lineup below them represents modules: the programs which you can then actively use during the actual run. I'll also come back to this later.



Run – In the rest of the video, you can see one entire successful run on a rank 1 vector, i.e. the easiest one. Your goal in each run is to progress through a sequence of stacks (stack = a lineup of the colourful hexes), each one consisting of several nodes (the said colourful hexes), to reach the end. In order to be able to advance from each stack to the next one, you need to breach all of the barrier nodes by reducing their strength to zero. You can do that with the help of your breaker modules. Ezpz, like this:



When done with the run, we're taken back to the world screen, credits in our account, looking at the market for stuff to boost our deck with. For the moment, this is where I'll pause. I'm all ears for any thoughts or questions; in the meantime, thanks for reading! And until next time –
« Last Edit: July 16, 2021, 01:14:04 PM by mz-one » Logged

Netspectre: CYBERPUNK || HACKING || ROGUELIKE || [devlog] // [twitterino]
mz-one
Level 0
**



View Profile
« Reply #4 on: March 18, 2021, 11:29:44 AM »

For most of the elements within the network run, such as barriers, sentries, protocols etc., we want to generate the visuals procedurally, i.e. starting just from elementary shapes or small sprites, laying them out in layers and geometric patterns and animating them in time. I threw together an editor for these kinds of effects, which are just Lua scripts that can use whatever LÖVE allows us to do, e.g. particles, shaders and so on. The editor then allows us to tweak the input values such as colors or dimensions and render the changes live:



We can export each effect straight into the game, or just instantiate it within a larger efect. For example, this is an effect that uses the simple grid effect shown in the previous video, instantiating it three times, just overlaying the instances over each other and controlling their color and other values through a few simple wave functions:


« Last Edit: July 17, 2021, 02:11:11 AM by mz-one » Logged

Netspectre: CYBERPUNK || HACKING || ROGUELIKE || [devlog] // [twitterino]
mz-one
Level 0
**



View Profile
« Reply #5 on: March 18, 2021, 11:32:33 AM »

These are the first attempts to create two actual barriers for the network runs:



Right now this is mostly a proof-of-concept, helping us figuring out where we want to go with the visual side of things and also easing our minds through some rough initial profiling, since I've never done a game in LÖVE with so much visual theatrics as we plan for this one. Everything looks good for now, so we're off to prototyping another important domain: narratives, but more about that next time –



« Last Edit: July 17, 2021, 02:12:04 AM by mz-one » Logged

Netspectre: CYBERPUNK || HACKING || ROGUELIKE || [devlog] // [twitterino]
mz-one
Level 0
**



View Profile
« Reply #6 on: April 18, 2021, 12:31:32 PM »

We're sketching the narrative side of things, both mechanically and in terms of content –

Our narrative goal is to help you build a progressively better idea of the fictional world that the game takes place in as you play. The idea is that we'll build a rich universe lore, but mostly keep it behind the scenes and use it to make sure that our stories are coherent. Each random event in the game will then reveal a fragment of that world, leaving a lot of space for you to connect the dots, hopefully immersing you in the process of imagining our fictional world with us, and partially making it your own.

A quick video of our prototype, playing around with how an event could read like and look on a screen –



We're thinking about a few specifics coming with our game being a roguelike, namely:

1/ Randomness: The random events will inevitably spawn in a different order for each player. Someone else might be worried about the consequences of this resignation on narrative control. Wouldn't it mean that there will be people, places, and concepts in the text that we haven't properly introduced? Our approach to this is to double down and put even more specifics in the text, pretty much without ever properly introducing them anywhere, whether sooner or later. Hopefully, this will make it obvious that you're not supposed to know who 'Revenants' or 'Shakima' are the first time that you see them in the writing; the sheer amount of unintroduced specifics should make it clear that you didn't just miss a single piece of exposition, but that there just isn't any in the game. The concept is that you'll then start to pay attention to the small cues, so that you can begin to imagine the world yourself, out of the basic human need to understand your environment.

2/ Repeatability: Netspectre is meant to be replayed a lot: a single playthrough should take about an hour, with the larger gameplay being in playing repeatedly, discovering more of the game every time you start. For the random events, this means that they will sooner or later inevitably spawn for the second or third time. This makes it tricky to work for example with surprising revelations, which obviously wouldn't be quite as surprising the second time around. Our answer to this is building some variation into the scenarios themselves, so that for example your investigation doesn't always necessarily turn out the same way, even though the original contract may have seemed the same.

We want to provide more clues that will incite the imagination than just the writing, so we want to accompany each event with a static illustration. The events will be shown as overlays over the world screen, with the illustration serving as a background to render their text onto. For the special scenarios, we want to have a specific illustration describing the particular event taking place, while for the more common events we'll use one of the more generic ambient images. Anyway, that's the idea, since we'll still have to see what we can afford with our shoestring budget, this being our first commercial project.

(Also, we just want to get some cool new cyberpunk art done, because we want to see more of it in the world, and that's reason enough.)
« Last Edit: July 17, 2021, 02:13:21 AM by mz-one » Logged

Netspectre: CYBERPUNK || HACKING || ROGUELIKE || [devlog] // [twitterino]
mz-one
Level 0
**



View Profile
« Reply #7 on: July 02, 2021, 12:22:08 PM »

We started to work on the procedural generation of the networks that you'll be able to run onto. We've had two or three algorithms in place previously, more or less simple placeholders to build the rest of the game around, but since it's such a critical thing to get right, we decided that it's time to start working on it, like, properly.

Here's a quick flyby over the current state of things:



We decided to create our networks basically through a generative grammar. We teach it rules such as:

- a run is 1-3 lanes,
- a lane is 5-9 stacks,
- a stack contains several nodes,
- a node can be a barrier, a sentry, a weakness, a database, a trap, or a terminal,
- a barrier has to have a certain strength, based on where it is in the network etc.

Then we ask the system to generate a run, provide it with a seed to use for all of the random decisions that it will make in the process, and the grammar deterministically expands this root symbol following all the rules and returns a token tree describing the network in all its details. Each rule is a script file of its own, encapsulating all the particular logic specific to that one step of the process.

So what do we look for in the resulting network? From the earlier placeholder algorithms, we know that there's actually quite a lot that the run should satisfy in order to support the gameplay that we want, particularly in terms of:

A/ Mechanical relevance: A lot of our network nodes, protocols etc. come with specific mechanics that only make sense in a particular context. For example, if a barrier comes with the 'double strength whenever weakness exploited' mechanic, it only makes sense on a stack where there's also weaknesses.

B/ Complexity curve: We want to make sure that the more complex mechanics are only introduced further down the difficulty curve. You don't have the equipment in the earlier turns to deal with the more sophisticated security elements such as protocols or sentries.

C/ Balance: We need to control the basic difficulty parameters of the run based on the rank of the contract that it represents, e.g. even though both a rank-1 and a rank-4 contract contain barriers, there should be more of them in the latter and they should have higher strength.

(We need to maintain a degree of control over this in order to keep the difficulty somewhat fair, but eventually decided not to care too much. It's a cyberpunk game set in a ruthless world. Sometimes the going gets tough and the network just is a bit harder than what its security reading suggested. If you're such an ace, deal with it!)

D/ Meaning: We want to infuse the generation process with quite a lot of narrative meaning, e.g. if you're hacking into a Troika network, i.e. into the netsec corporation, they're going to use a lot of their own technology in their perimeter; if you're diving into a datacenter, there's going to be a lot of databases, etc.

We also spent a couple of days to make the generative engine produce an interactive log that can be used to inspect the timeline of the entire generation step-by-step. That can be seen in the second part of the video. I think it's great how easy it is to produce quite a smooth UX just with basic jQuery nowadays. Good job, y'all out there –

Right now, we've got the generative framework going and integrated into the game, so it creates simple networks that the game can load, such as the one in the video. The next step now is to work on the particular rules so that they produce the networks as close to the criteria described above as possible. Fun stuff!

(Btw, you might notice that the game looks differently from what we've posted previously. This is because the earlier posts showcased our preproduction prototype, while now we've moved onto actually creating the real thing, from the ground up again. The caveat being that the real thing now looks very crude.)
« Last Edit: July 17, 2021, 02:13:04 AM by mz-one » Logged

Netspectre: CYBERPUNK || HACKING || ROGUELIKE || [devlog] // [twitterino]
logophil
Level 0
***



View Profile WWW
« Reply #8 on: July 02, 2021, 01:37:35 PM »

I love the concept of this! I like how even the animations are procedurally generated in your prototype, and that really fits the theme of the game. Will be following this with interest.
Logged

mz-one
Level 0
**



View Profile
« Reply #9 on: July 24, 2021, 06:02:27 AM »

Thank you very much!

For today's devlog, it's mainly just a quick update that we also started a twitter: https://twitter.com/NetspectreGame.

We'll post a little bit more frequently in there just because of the character of the respective platforms: I'd like to keep the posts here more substantial, and consequentially a bit more apart, and to post the more random pieces of progress on twitter so as to not spam here too much ,)

Just to provide a general update on things in the meantime, I'd say that we're well on our way. I put together an internal release today so that the team can playtest the last several months of changes hands-on. It contains the first versions of music and also first proper scenarios, so that's something. I plan to focus on some of the smaller secondary mechanics in the coming weeks, e.g. the component optimisation mechanic, the character skills and talents, bonus objectives, etc.

In the meantime, thanks again for the supporting messages! It's great to see that there are people interested in what we're trying to do –
« Last Edit: August 12, 2021, 11:27:48 AM by mz-one » Logged

Netspectre: CYBERPUNK || HACKING || ROGUELIKE || [devlog] // [twitterino]
mz-one
Level 0
**



View Profile
« Reply #10 on: August 12, 2021, 12:32:42 PM »

What is up, soon-to-be netspectres! Just wanted to let you all know that we're moving forward, slowly, perhaps, but steadily, for sure –

For today's devlog, I wanted to show a bit of how we're approaching our worldbuilding. It's certainly not exactly groundbreaking science, but since I'm quite happy with how it's turning out, I wanted to share at least quickly with you all, just so that you can be too ^.^

First of all, let's go to today's video already:




Our modus operandi is that everybody on the team is more than welcome to pitch ideas for the worldbuilding, as is the case with all the other creative aspects, too. To that end, we have a collaborative document called atlas, where everyone on the team is invited to contribute snippets about whatever aspect of our universe they currently happened to be thinking about. Thought of a cool concept for a music club? Leave a note in the atlas, along with what you think that it looks like. Imagining how far we've progressed with the Mars colonisation? Let's just start brainstorming ideas and see what happens. Got a great name for an energy drink? You know what to do.

Everything is fair play as far as pitching ideas into this collaborative brainstorm document goes. We then comb through the ideas occasionally and decide to canonise some of them; we elaborate on those properly and enter them to our internal wiki, Atlas with a capital A, which elevates them to the status of a definitely confirmed real truth about our world. At this point, we make sure that the information makes reasonable sense in context of all the other facts that we have already commited ourselves to. Any information in Atlas is then legit to use when we're writing our narrative scenarios, which I talked about briefly in one of the earlier entries.

And that's it! It would be fair to ask: is it really that important to think about what are the different strands of techno music called in our world, if it's a hacking game and you'll be mostly just running on networks, stealing everybody's data to sell? Yes. Yes, it is.
« Last Edit: August 12, 2021, 12:50:58 PM by mz-one » Logged

Netspectre: CYBERPUNK || HACKING || ROGUELIKE || [devlog] // [twitterino]
mz-one
Level 0
**



View Profile
« Reply #11 on: September 11, 2021, 10:33:35 AM »

Hi everyone! We're moving forward, lately mostly on our narration, both in terms of the framework and of first content –





To highlight the most significant progress –

Scenario titles / contract description: For a while, we'd been torn between the idea that the contract descriptions should be, well, descriptive, e.g. 'Run onto the dockside logistics center and make a shipping container disappear', and our affection for shorter/cheesy mission titles, e.g. Lost In The Stacks. Finally we leaned back into the wisdom of the internet, so now each scenario has its own, compact title, which we use on all the contracts and narratives that it spawns, helping to tie them together, and each contract also contains a longer synopsis, which you can use to recall more clearly what it was about before you choose it as your run for the turn.

Characters: We decided to make the characters a more prominent part of the design, so now a/ a character's portrait is shown next to the last shown phrase in the active narrative, b/ each contract remembers its contractor and shows their portait on its detailed display, c/ we gave each character a proper name and started to show it next to their portrait on the contract detail overlay, and d/ we're designing scenarios with consequences based on how you treated their characters earlier in the playline.

Scenario spawning: With first few scenarios implemented, it was a good time to script the behind-the-scene narrator that spawns the scenarios automatically each turn. It tries to constantly keep the number of your available contracts around 2-4, depending on how far in the playline you are, so that you always have a choice to make, but aren't overwhelmed by too many options. There's a certain flexibility in difficulty of each scenario now, which the narrator leverages to try to always offer you one option that's slightly more challenging for your current level, and one that's a safer choice. (With that, we also implemented the option to mingle, i.e. to spend hustle points to go out there into the world and look for more contracts, if you're not content with your selection. But let's talk about hustle points some other time –)

Random tokens: For some of the specific names used in the text, we now randomly pick from several alternatives just to give the narration a bit more variety. For instance, when we say 'Release money from a frozen Hemsworth & Brooks account', the specific bank will sometime get switched up for 'Crestspire Fintex' or 'Freehaven Investment', just to make it seem a bit different when it spawns each time.

Long story short, our narrative tech is again a bit more sketched out, and we can focus on filling it with more content. We have several other exciting developments in the works, so hopefully I'll be back soon with more news. In the meantime, we hope you're all doing great –
« Last Edit: October 03, 2021, 12:41:03 AM by mz-one » Logged

Netspectre: CYBERPUNK || HACKING || ROGUELIKE || [devlog] // [twitterino]
mz-one
Level 0
**



View Profile
« Reply #12 on: October 03, 2021, 12:56:32 AM »

Hi everybody!



We did a quick pass over our visuals: they're still very much placeholders, but functionally they're now closer to what we want to eventually have. We started to determine each node's visuals from its mechanics, so that you can read the situation just from their looks, without having to hover over everything. There's a lot of work to be done in this direction to make this look as well as we want it to look, and also to clearly indicate all the necessary information, but it's a start –

Also added a few more placeholder illustrations for the events: these are all just public domain city photos at the moment, run through a basic color filter, just meant as a placeholder for the idea that each event should have its own image, which is something that we're working on, also. Hopefully I'll have more to share about that soon!

Hope everyone's doing well –
« Last Edit: October 13, 2021, 10:44:09 PM by mz-one » Logged

Netspectre: CYBERPUNK || HACKING || ROGUELIKE || [devlog] // [twitterino]
mz-one
Level 0
**



View Profile
« Reply #13 on: October 13, 2021, 10:43:12 PM »

Hey fellow spectres –

We were asked in the LÖVE discord to post a video that would better explain the mechanics within the run, so here it is >>



It's a run on a randomly generated network, commented all the way through so that it's easier to understand what's up. The network has the security rank of just 1, meaning its the easiest one possible, so there's just the basic mechanics: you only have two modules and there are only the very basic nodes present in the network.

Until next time!
Logged

Netspectre: CYBERPUNK || HACKING || ROGUELIKE || [devlog] // [twitterino]
Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic