1. We have added a Gift Upgrades feature that allows you to gift an account upgrade to another member, just in time for the holiday season. You can see the gift option when going to the Account Upgrades screen, or on any user profile screen.
    Dismiss Notice

So, I've built this cool event system...

Discussion in 'Civ5 - Creation & Customization' started by Ryika, Mar 9, 2017.

  1. Ryika

    Ryika Lazy Wannabe Artista

    Joined:
    Aug 30, 2013
    Messages:
    9,396
    ...and it took a while, but it's really cool and all:

    Spoiler :
    event.jpg


    Unfortunately, I quickly realized - as demonstrated by the screenshot - that my writing is still really terrible and cringy. And pretty dark as well actually. Does the girl really have to be that young?!

    But oh well, I decided to forge ahead anyway, after all, it's good practice, and in the end, I can just get someone who's better at it to work through the texts later. So I created a bunch of events, but quickly realized that I ran into the next problem - Civ 5 just isn't designed in a way that allows you to give meaningful rewards from those Events, without basically breaking the game.

    So I decided to add a resource system to act as a vehicle that allows me to give out tons of meaningful rewards:
    Spoiler :
    Untitled-3.jpg


    This is obviously a placeholder-system (and there would be a lot more resources if it wasn't just a placeholder), just to play around with the idea a bit. After a while I had this really cool vision for what I want to create - a Fantasy-focused Civilization game that uses elements of games like Hand of Fate (if you haven't played it, look it up!) to give meaning to the Events. Every few Turns you'd trigger an Event, and then make a choice based on either what is most beneficial to you, or based on what kind of leader you want to roleplay.

    Of course, the idea was to implement those resources into the rest of the game. Wood is required for buildings, stone for national- and world wonders (don't ask, game logic), Supplies keep your Empire from Starving in Winter.

    Oh right, I didn't even talk about Seasons, right? There's 4 of them, obviously, all with their unique Events, and Winter is really harsh, and Events are mostly devastating, which is why the rest of the year you're supposed to be aware that Winter is Coming - and here it is actually coming after a set number of turns - and hoard tons of resources. Because if you run out of Supplies during Winter, then your Empire's going to starve, and not produce lots of Culture and Science. Amazing, right?

    Anyway. After I had done that, I coded a few effects that Events can create. Add/remove resources, yields, create buildings/units, unlock (dummy-)technologies and Policies, unlock other Events that are then thrown into the pool of Events that can trigger - this allows for storylines to lead through the game based on what decisions the player makes, but also for some risk-reward gameplay. Pick a strong bonus that also unlocks a negative Event that might occur somewhere down the line, or pick the weaker bonus?

    I then had this other cool idea that certain national wonders should be able to unlock events as well, because that would be nice milestone - create a National Wonder, and now there's this half-a-dozen new, very positive Events that can trigger during spring and summer. So of course I added that as well.

    Of course I later added an "automated" Tooltip to the Events to allow players to see what they get from each option - boy, that was more painful to create than I had expected, but in the end it worked:

    Spoiler :
    Untitled-4.jpg


    Then of course, because it's just a reasonable thing to do, I also added an option to disable these tooltips, or at least I planned to do so in the future after implementing them. Because if you do it, do it right, right? Right.

    Anyway. I then roughly thought about how many events I would need to actually have enough content, and I came to the conclusion that I'd probably need ~200 Events for players to not repeat every event in every playthrough.

    After some further thinking I realized that's quite a large number, it has three digits, and the first one isn't even a 1. That's bad, but it's doable, right? Adding events is pretty simple and takes around a minute, adding the text though. Man, I'm so bad at writing. Some of those Texts actually took me an hour or so, of course including the 2 epilogue-texts that I didn't make screenshots of.

    When I was thinking about the work that lies ahead I then suddenly, our of nowhere had a realization: I do not only have to create ~200 Events. No, I also have to create a whole new fantasy-world, with a whole-new technology tree, and a whole collection of Civilizations. And a whole new set of religions, and a whole new set of Policies, and a whole new set of basically everything.

    It was at that point, about 2 weeks ago, after 40 hours of coding and playtesting, that I stopped working on my amazing Mod that somewhere in the past started as a simple event system. I wasted around 40 hours of my time working on a mod that is so ambitious and large, that, if I had actually thought about what I'm trying to do at the very beginning, I would have never started.

    So... I'll be honest here. I don't even know why I'm writing this, other than the fact that I'm really bored. And you're probably angry now because you read through all of this and wasted about 5 Minutes of your precious time without getting anything out of it. I'm sorry?

    Uhh... I mean, let this be a lesson to you I guess. Don't be stupid like I am. Think before you start coding, and work on a project of a reasonable size!

    Yes.. yes, that's why I created this thread. Right. Moral of the story and all that stuff.
     
    Last edited: Mar 9, 2017
    Nutty and Troller0001 like this.
  2. Hoop Thrower

    Hoop Thrower Cyberbolivarian Inkarri

    Joined:
    Aug 5, 2013
    Messages:
    2,487
    Location:
    Chile
  3. Ryika

    Ryika Lazy Wannabe Artista

    Joined:
    Aug 30, 2013
    Messages:
    9,396
    Yeah, I know it, but it's very different from what I had in mind.
     
  4. Enginseer

    Enginseer Salientia of the Community Patch Supporter

    Joined:
    Nov 7, 2012
    Messages:
    3,217
    Gender:
    Male
    Location:
    Somewhere in California
    You still have the source code for the resources UI? I like the background shade and the spacing.
     
  5. Ryika

    Ryika Lazy Wannabe Artista

    Joined:
    Aug 30, 2013
    Messages:
    9,396
    That's the standard shade, it just looks different because I've used semi-transparent texture-overlays to "simulate" seasons (which was, of course, another "placeholder" that would have had to be replaced by something else. :p).

    Spacing:
    Code:
    <Context>
        <Box ID="Box" Style="BGBlock_ClearTopBar" />
        <Grid ID="LargeResourceGrid" Size="600,500"  Anchor="C,C" Style="Grid9DetailFive140" ConsumeMouse="1" >
            <Image Anchor="L,C" AnchorSide="O,I" Offset="-17,0" Size="32,64" Texture="Dec32x64Left.dds" />
            <Image Anchor="R,C" AnchorSide="O,I" Offset="-17,0" Size="32,64" Texture="Dec32x64Right.dds" />
    
            <!--
            <Image Anchor="C,T" AnchorSide="I,O" Offset="0,-27" Size="256,64" Texture="DecTop256x64.dds">
                <Image Anchor="C,C" Offset="0,-6" Size="80,80" Texture="NotificationFrameBase.dds">
                    <Image Anchor="C,C" Offset="0,0" Size="80,80" Texture="NotificationGeneric.dds" />
                </Image>
            </Image>
           -->
           
            <Label ID="ResourcesLabel" Anchor="C,T" Offset="0,21" String="Resources" Font="TwCenMT24" FontStyle="Shadow" ColorSet="Beige_Black_Alpha" />
           
            <Label ID="ResourceCategory1Label" Anchor="L,T" Offset="30,51" WrapWidth="280" Font="TwCenMT20" FontStyle="Shadow" ColorSet="Beige_Black_Alpha" String="Materials"/>
           
            <Label ID="Resource1Label" Anchor="L,T" Offset="30,71" WrapWidth="280" Font="TwCenMT16" FontStyle="Shadow" ColorSet="Beige_Black_Alpha" String="[ICON_RES_STONE] Wood"/>
            <Label ID="Resource1AmountLabel" Anchor="L,T" Offset="210,71" WrapWidth="280" Font="TwCenMT16" FontStyle="Shadow" ColorSet="Beige_Black_Alpha" String="200000 (+100)"/>
            <Label ID="Resource2Label" Anchor="L,T" Offset="30,91" WrapWidth="280" Font="TwCenMT16" FontStyle="Shadow" ColorSet="Beige_Black_Alpha" String="[ICON_RES_STONE] Stone"/>
            <Label ID="Resource2AmountLabel" Anchor="L,T" Offset="210,91" WrapWidth="280" Font="TwCenMT16" FontStyle="Shadow" ColorSet="Beige_Black_Alpha" String="200000 (+100)"/>
            <Label ID="Resource3Label" Anchor="L,T" Offset="30,111" WrapWidth="280" Font="TwCenMT16" FontStyle="Shadow" ColorSet="Beige_Black_Alpha" String="[ICON_RES_BANANA] Supplies"/>
            <Label ID="Resource3AmountLabel" Anchor="L,T" Offset="210,111" WrapWidth="280" Font="TwCenMT16" FontStyle="Shadow" ColorSet="Beige_Black_Alpha" String="200000 (+100)"/>
    
            <Label ID="ResourceCategory2Label" Anchor="L,T" Offset="30,141" WrapWidth="280" Font="TwCenMT20" FontStyle="Shadow" ColorSet="Beige_Black_Alpha" String="Forces"/>
           
            <Label ID="Resource4Label" Anchor="L,T" Offset="30,161" WrapWidth="280" Font="TwCenMT16" FontStyle="Shadow" ColorSet="Beige_Black_Alpha" String="[ICON_GREAT_ENGINEER] Labour Force"/>
            <Label ID="Resource4AmountLabel" Anchor="L,T" Offset="210,161" WrapWidth="280" Font="TwCenMT16" FontStyle="Shadow" ColorSet="Beige_Black_Alpha" String="200000 (+100)"/>       
            <Label ID="Resource5Label" Anchor="L,T" Offset="30,181" WrapWidth="280" Font="TwCenMT16" FontStyle="Shadow" ColorSet="Beige_Black_Alpha" String="[ICON_GREAT_GENERAL] Military Force"/>
            <Label ID="Resource5AmountLabel" Anchor="L,T" Offset="210,181" WrapWidth="280" Font="TwCenMT16" FontStyle="Shadow" ColorSet="Beige_Black_Alpha" String="200000 (+100)"/>
    
            <GridButton ID="CloseButton" Size="150,36" Anchor="C,B" Offset="0,12" Style="BaseButton">
                <Label ID="CloseButtonLabel" Anchor="C,C" Offset="0,-2" String="Close" Font="TwCenMT20" FontStyle="Shadow" ColorSet="Beige_Black_Alpha" />
            </GridButton>
        </Grid>
    </Context>
    
     

Share This Page