Jump to content

[WIP] Kerbal Stories and Shouts (KerbalSNS) - Giving more personality to your Kerbals through random events


johnkeale

Recommended Posts

Kerbal Stories And Shouts (Kerbal SNS for short) is a plugin that is aimed at increasing immersion in your game.

Ever wonder what your Kerbals do when you leave them on their bases?
Ever wonder what your crew thinks of Jebediah?
Ever wonder what the citizens of Kerbin really think of your space agency?
Is Minmus really made of ice cream??

Kerbal SNS aims to give some 'personality' or 'story' to your Kerbals stationed on bases or space stations by answering silly questions like those above.

Stories

Building a base or deploying a station on another body is difficult, that's why being able to do so is really satisfactory. But after doing so, you're essentially left with nothing. Sure you can gather science and probably perform contracts if you are in Career or Science mode, but after that, you almost always move on to another mission or another body. 

Wouldn't it be fun if something random happened to these bases/stations and you get notified about it? Maybe Jeb saw a red craft being pulled by 9 more weird crafts below the station. Or that Bob finally confirmed that Minmus really is made of ice cream. Wouldn't it be fun to receive funny reports like this while you're on another mission?

This mod aims to do such that. By crafting random stories (retrieved from an editable cfg file), you the player will be notified of random stories happening on your previously deployed bases or stations. The stories would be simple and are not meant to be game-changing, and are just something funny you get while doing time warp or executing a maneuver node, etc. The stories will take into account the crew on the base, so only their names appear on the story text. The stories will appear randomly and this can be configurable on the Settings screen. Stories would also include easter eggs, and you the player can add stories yourself by editing the cfg file.

Images speak better than words, so here are some screenshots:

Spoiler

ZgrRbdq.png

Dl5G1bU.png

You can reminisce past stories by reading them again on the 'browser' via the SNS button on the toolbar as shown above.

Shouts

Your space program has its reputation, but it's just a boring colored bar on the top of the screen, just a number. We all know that reputation is more than just that.

Wouldn't it be more fun if you could really know your reputation by knowing what the netizens of Kerbin think? Maybe they don't want the bodies you are planning to visit? Maybe they think your rockets are ugly, or that you should focus on Dre- *ehem* I mean Eloo. What if Kerbal has its own social platform where you could read the Kerbal's thoughts?

This mod aims to let you do that. By generating random shouts(tweets) (retrieved from an editable cfg file) and dispaying them on a 'browser', you can read shouts from Kerbals just like you would on a real social media webiste. Think of this more like a KSP Version of twitter. There will be shouts based on your current reputation, random nonsense, easter eggs, lame space jokes, and anything else under the Sun (but mostly space-related). The shouts are supposed to be funny just like the stories. Since IRL news feed only feature the most recent posts, shouts are planned to be the same. The shouts to be displayed will only be from the most recent hour, and are designed to be temporary. If you timewarp to an hour or more later, all of the previous shouts will be gone and new shouts will be displayed. The same with stories, you the player can add shouts yourself by editing the cfg file.

Here's more screenshots!

Spoiler

xfW2buk.png

ihYZPCa.png

TODO List

So here's some things that I plan to include in the future:

  • MOAR STORIES AND SHOUTS
  • more configurable plugin settings
  • a way for other mod makers to add stories and shouts to support my mod
  • interface for other mods to post stories/shouts dynamically
  • situational stories
  • stories with connected narratives
  • stories connected to Kerbal's traits
  • unlocking stories by exploration
  • stories based on milestones
  • situational shouts
  • shouts based on current events (e.g. vessel changing SOI, kerbal going on EVA)
  • shouts about current vessels
  • shouts responding to other shouts
  • shouts connected to Kerbal's traits
  • shouts based on milestones

If you have story or shout suggestions, please don't hesitate to suggest them here. The more stories/shouts there are, the more variations there could be, the more fun it would be! 

Links

Github

License (GPL v3)

Credits

@ensou04 for the Twitter idea
 

Thank you very much!


Original post:

Spoiler

Good day!

So I have an idea about a simple plugin/mod, and I was wondering if it already exists, as well as the community's opinion on it. So here goes.

Simply speaking, the idea I had is almost the same as the event system on Crusader Kings. In that game, while you're playing, you'll receive messages about things happening in your kingdom. For example, you'll receive a message that your King has been injured during hunting, or a weird person has appeared in your court, or your Queen has contracted the plague, etc. You the player can act on it and your choices will affect the game.

My idea with Kerbal Space Program is the same, where the plugin will use the message system to send messages about events to the player. The events would be simple and not game-changing, but would give some 'personality' to your Kerbals. I'm thinking of targetting Kerbals in your bases or space stations, and having messages like:


> Bob reports a ghastly white figure floating around the station when he woke up one night for a quick toilet trip. Turns out Jeb forgot to hang his EVA suit properly after an EVA.

> Bill reports that he thinks he knows who's eating more snacks than usual; for the evidence, he points out the change in the measured delta-v of the escape vehicle when a certain Kerbal boards it.

> Jeb, Bill and Bob has turned off all the comms on the station and has refused to do work. After a few hours however, they turned the comms on again and negotiated rest days with mission control.

(Please pardon my dry sense of humor, but I hope you get the point)

The messages will appear at random, and not that often. It's just something funny you get while doing time warping or executing a maneuver and the like. It's more of an 'immersion' mod (like Chatterer); and as I said previously, aimed at giving 'personality' and 'story' to your Kerbals. Messages could include easter eggs, as well as user-defined events (that can be added by a simple cfg file edit) for some historical easter eggs that the player wants to personally add.

Down the road, I'm thinking of considering the Kerbal's traits, or having a 'story' between the messages, i.e. some messages depend on a previous message that might form a narrative. Down the road again, is detecting events that the player has done (e.g. achieved first orbit or first Laythe landing) and having messages/events pertaining to that. But yeah, before thinking of those, I think a rough prototype is the first goal.

On the technical side, I think it's not that hard of a plugin/mod to create. I have experience as a programmer (albeit not C#) and from my quick estimate, a prototype could be made in a short time. As such, I am wondering if it could already exist? If it does, what is the name of the mod? If not then I think I could create it, mostly for my own enjoyment, but I would like to know what the community thinks. :)

 

Edited by johnkeale
added license
Link to comment
Share on other sites

I had a similar idea but its more like Twitter for Kerbin. Its like Chirper from Cities:Skylines. Basically its a feed where netizens of kerbin tweet about your missions and occasionally your crew tweets too. It'll be constructed by creating a list of preset sentences for example:
 

Bill Kerman (dd-mm-yy)
- I've been in orbit around -celestial-body- for so long. I hope there are snacks around.

Jebediah Kerman (dd-mm-yy) //Snacks! Intergration
- WE ARE RUNNING LOW ON SNACKS! I hope we last more than -supply_time_estimate-

Messages are situational, based on your Reputation and the missions you are doing.

If for example you have 0 or negative reputation. civilian kerbals will comment about budget cuts and their distaste to your space program

Edited by ensou04
Link to comment
Share on other sites

@ensou04 Ooh, that's a nice idea as well! It won't fit with the event message system though, since I am thinking of that to be infrequent. But a twitter-like idea is really cool and fits entirely with what I want, which is to have some sort of 'story' and personality with the Kerbals.

I actually really like your idea, so I'm asking permission if it's possible to include it in my idea (with credits of course). My idea and yours are counterparts, but complement each other. Mine is something more 'official', as I envision it to be 'reports', albeit silly ones. Yours is something more 'unofficial', and would be frequent (it's a social media feed after all). 

I'll try asking around on Reddit if my mod idea already exists. If not, I am thinking of making it myself, and I would like to add your idea down the road. It would be really cool!

Link to comment
Share on other sites

@johnkeale Your idea fits well with the event reports yeah! i intended mine to have a dedicated small window (like contracts window in flight). If you could write the mod that'll be great! you can use my idea. I can code a decent amount but im already busy working on RSE at a moment

Edited by ensou04
Link to comment
Share on other sites

That's my line of thinking as well. Since it is a feed, it should be viewed on a small window that can be scrolled. Now that you mention it, the player should also be able to view past 'official' reports too.

Thanks for the permission! I'll incorporate your idea going forward with this.

Link to comment
Share on other sites

@wasml Thanks! I've been browsing mods for quite a while now too, and I thought that similar mod did not exist. But I was actually wrong. It was pointed out to me on reddit that a similar mod did really exist, though it is not the main focus of that mod.

The similar mod I'm talking about was Angel's BARIS mod. If you are familiar with that mod, you'll know that my idea is not the main focus of that, but it was some sort of mini-feature. I use Angel's mods, mainly Snacks!, and I have seen BARIS before, but because my gameplay skills are still not up there, I didn't really pay attention to it that much. BTW, the BARIS mod, simply speaking, allows for some of your parts to fail during flight, allowing for some unpredicted events to happen while you're playing the game. In line with this, BARIS also has a mini-feature(?) called 'Event Cards'. This mini-feature is the one that's similar to my idea here. 

The spirit is the same, but the idea I have is more lightweight, and is not meant to change your game whatsoever. So the focus and/or specifics of my vision is different. Nevertheless, I plan on at least notifying Angel that I have this idea and I will be taking inspiration from their work.

@Benjamin Kerman Thanks a lot! I will be needing all the help I can get since this will be the first time I will be doing this, so I really appreciate the support! :) I will be visiting and asking questions that's for sure.

My first goal is to develop the minimum viable prototype containing my vision, and hope that I don't get into feature creeps early one. BTW, here comes my first question haha. Once I start developing this one, should I transform this thread into a WIP thread, or create a whole new thread?

Thanks everyone for the support! Cheers~

Link to comment
Share on other sites

1 minute ago, johnkeale said:

My first goal is to develop the minimum viable prototype containing my vision, and hope that I don't get into feature creeps early one. BTW, here comes my first question haha. Once I start developing this one, should I transform this thread into a WIP thread, or create a whole new thread?

Yes you should transform it to a WIP or DEV thread instead. 

Link to comment
Share on other sites

It's already taking shape!

Spoiler

yS2ASvb.png

With this, I think I can really proceed. I now have to seriously think about important stuff.

First and foremost is the mod's name! I'm thinking of a Social Networky name, since I'm planning to incorporate ensou04's twitter idea in the future. If you have suggestions, please let me know. For now I'll just call it Random Kerbal Events.

Lastly, I think creating the code is the easy part. The hard part is actually the events. The more events, the more the variation, the more fun and interesting it will be. If you have any suggestions please also let me know! I'll be thinking about these events a lot and I hope I can think of some funny ones.

Thanks again everyone for the support and interest. I really appreciate it.

Cheers~

Link to comment
Share on other sites

@johnkeale very nice i love it!

For the name maybe call it something like "KLog" (Kerbal Log) or something more generic like "Kerbal Social Network".

Other names on top of my head: "Kerbal Report!", "Ping!"

we could also help out fill in more reports if you like as @Benjamin Kerman suggested :D

I wonder what would the twitter-esque feed will look next

Link to comment
Share on other sites

@Benjamin Kerman Yeah! That's one of the objectives of the MVP I'm planning to build.

  1. To be able to change the frequency of the messages in-game
  2. To be able to get the crew of vessels, and use their names appropriately on the messages
  3. To be able to add/edit/delete events just by editing the cfg file

That's why I'm also considering how the cfg file will be structured, i.e. what the properties of the 'Event' object will be. For now, it's a simple as:

Spoiler

EVENT
{
	kerbalCount = 2
	// vesselType
	eventMessage = %k1 reports a ghastly white figure floating around the station when he woke up one night for a quick toilet trip. Turns out %k2 forgot to hang his EVA suit properly after an EVA.
}
EVENT
{
	kerbalCount = 1
	eventMessage = %k1 reports that he thinks he knows who's eating more snacks than usual; for the evidence, he points out the change in the measured delta-v of the escape vehicle when a certain Kerbal boards it.
}
EVENT
{
	kerbalCount = 3
	eventMessage = %k1, %k2 and %k3 has turned off all the comms on the station and has refused to do work. After a few hours however, they turned the comms on again and negotiated rest days with mission control.
}

 

I actually plan to post the MVP once I achieve the above objectives, so as to make my vision more 'concrete'. From there I will proceed.

Anyways, I was just really glad to make it work for the first time. This is my first time building a mod for a game, and also my first time with C#, so there are many things that were new to me. And honestly, I thought I would bump into lots of problems early on. Turns out it was easy to start coding since there is a wealth of resources here and there, and I'm really thankful for that! ;)

@ensou04 Thanks for the suggestions! I'll keep those in mind while considering what the name will be! And yeah I'm excited to build the twitter part too! I actually plan to build it right after the MVP, because it will really blend well with the reports. Though I imagine that building it will take longer time, since I will need to create its own UI. But that part actually also excites me, I can't wait to get onto it!

Edit: A name idea came to me just as I was about to sleep. I thought of posting here so I won't forget. It's a bit of a stretch, but "Social Networks and Archived Reports of Kerbals Installed in Encampments", or SNARKIE, seems cool hahaha

 

Edited by johnkeale
added name idea
Link to comment
Share on other sites

@johnkeale I'd personally choose a node name more concise that just "Event" as you could possibly run into interference (not sure if stock or any mods use Event as a node), or you can wrap them in a larger node with a different name like below

KERBALEVENTSYSTEM
{
	EVENT
	{
		name = GhostyBoy
		text = ...
	}
	EVENT
	{
		...
		...
	}
}

the other option that I mentioned would be something like this

KESEVENT
{
	name = GhostyBoi
	text = ...
}

You'll probably be able to get away with just using EVENT, but I would personally go with something more concise. 

Link to comment
Share on other sites

So I now have built a very very very rough prototype mod illustrating the basics of the idea I had. You can download it here.

What it does is it gets all of your stations and bases currently in flight, matches their crew to a random event listed on a cfg file, and sends a message via the MessageSystem like so:

Spoiler

VYALJvL.png

Spoiler

ZgrRbdq.png

You can also add your own events to the eventList.cfg file. The format is the following:

Spoiler

    RANDOMKERBALEVENT
    {
        name = // not so important right now
        kerbalCount = // the number of kerbals appearing in the event message
        eventMessage = // text containing description of your own event
        
        // to insert kerbal names to the event messagae, use '%kn' in place of the Kerbal, where n is a number
        // to insert whether the vessel is a base or station, use '%v'
        // example: %k1 complains that %k2 ate all of the snacks of the %v.
        // If Bill & Jeb are in your station, the above will be transformed to: 
        // Bill complains that Jeb ate all of the snacks of the station.
    }

 

Since this is a rough prototype, I would advise against using it in your own save file, unless you know what you are doing. If you want to try the prototype though, I will also provide the save file that I used in testing right here.

The frequency of the messages can be adjusted in the settings like so:

Spoiler

qsYOnLx.png

Once I finalize the name of this mod, I'll update this thread to a WIP one, as well as provide more links, and probably a license as well. But for now, here's the prototype containing my vision.

Cheers!!

Link to comment
Share on other sites

Do all the events have to be in one file?  Or can you make it so that mod makers can add events to their mod to support your mod?  (I'm sure if you wrapped them in a larger node MM could handle the adding, but if they're all top-level I'm not sure how that works.)

Link to comment
Share on other sites

This sounds really awesome. I especially like the idea of these telling stories, and if I had to suggest something, I'd love to see story events prompt exploration of an area. Kinda like science contracts, just going into an area and doing a crew/eva report to engage the next event.

Link to comment
Share on other sites

@DStaal For now I just put them into one file. 

That's actually a really good idea! I'll look into that, but for now I'll just add it to my TODO list. :)

@FungusForge That's a good idea too. Since my vision of this is that it shouldn't change the game whatsoever, nothing should happen if the player ignores the prompt. If the player chooses to explore, what will happen is just another event is unlocked. I'll add it to my TODO list too! Though I imagine that that would be implement further down the line. 

Hmm, now that I think about it, can this be done via Mission Builder? 

Anyway, to officially start the development of this mod, I have to come up with the name that will serve to identify this mod. Random Kerbal Events is just a placeholder, and I thought that a more unique, snappy name would be better.

I thought about @ensou04's suggestions. "Kerbal Social Network" is a good one, and I'm building from that, as well as "Kerbal Report!" and "Kerbal Log".  I also liked how snappy "Ping!" sounds. With this, I thought of  "Social Networks and Archived Reports of Kerbals Installed on Encampments (SNARKIE)". But on hindsight, it looked really long and cumbersome, so I won't use it.

I really liked the twitter idea, and as I said it complements well with the reports part. It is the perfect place for meme-y messages, or those corny jokes and lame puns, as well as some more official news headlines. The mod can detect milestones the player does and have some Kerbals tweet about it and it will be really cool. I also like the fact that it can be tied to the reputation! As such, I'm thinking of including it on the name.

I would like to capture the name (Twitter)'s essence in the name. As you might know, tweets are supposed to succint, as there is a character limit when posting a tweet. Since there are no animals on Kerbin (that we know of), I thought of using the Kerbals instead. I really liked Chatterer's name, as it captures what that mod is about. Real life audio are kerbalized to make it sound just simple 'chatter' while playing, but it really increases immersion. For me, playing the game without chatterer would seem like an entirely different game.

When Kerbals speak (e.g. on Squad's trailers), they really seem to be nonsensical chatters. And some (or most) of the time, tweets are also nonsensical, I thought of calling tweets something synonymous to chatter, like maybe ramble, babble, yap, etc. Then the official reports are more like stories, so I thought of capturing that in the name too. With this, I thought of the following names (prefix Kerbal can be ommitted):

  • (Kerbal) Reports & Rambles
  • (Kerbal) Random Reports & Rambles
  • (Kerbal) Reports & Rants
  • (Kerbal) Random Reports & Rants
  • (Kerbal) Stories & Shoutouts
  • (Kerbal) Myths & Mumbles
  • (Kerbal) Tales & Tattles

I thought having similar words start in the same letter is kind of 'snappy'. I personally like "Kerbal Random Reports & Rants" though, where twitter will be named ranter, but it still doesn't seem to quite fit. I think I might be overthinking this. :v

Link to comment
Share on other sites

@johnkeale if you'd like, I've written code recently to do exactly what @DStaal is suggesting with high-level nodes adding new events. If you need help, I'd be happy to provide the code that does it or a pointer in the right direction, otherwise I may have to take it upon myself to make PR #1 :P

Link to comment
Share on other sites

@Benjamin Kerman Ooh that will be a big help. I've yet to setup github, but I will do so soon. 

I have only used git in my personal projects, and I have no experience using it with other people (we use different version control at work). As such, I actually don't know how to handle pull requests and the like. Though I think it's nothing that a simple research and study cannot solve. Anyway, I will be setting up the github once I finalize the name.

The name. I'm getting stuck with the name and I think I'm really overthinking this. To be able to proceed, I have decided on a name, and if I think (or someone could suggest) a really good one, I will just change it down the road. The name I have decided on is: "Kerbal Stories and Shoutouts", or Kerbal SNS for short. So the official reports will be known/called as stories, and the tweets will be called as shoutouts. I think the name captures what this mod is about, and I like that its abbreviation is SNS, which could stand for social networking site, which is what twitter is.

With this, I will be updating this thread to a WIP one, as well as creating a github repo for this. @Benjamin Kerman I'll pm you once the setup is complete. Thanks! :) 

Edit: Oh sorry, please point me in the right direction first. If all else fails, I'll just ask for you to make a pull request. I got excited about the pull request since it will be the first time that I'll be handling that ;)

Edited by johnkeale
Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...