Beyond ECS for game design

Beyond ECS for game design

ECS (Entity-Component-System) has been the staple of game design since the 90’s. Unfortunately, it isn’t great in some ways – especially for the naïve implementations. While it sounds very object oriented to create objects for all the monsters, characters, rooms, and so forth – it turns out that the objects usually become unmanageably huge, overly complex when adding new functionality, and often perform poorly once you get any amount of complexity.

Text roguelike games are great microcosms of game design. Because they don’t have fancy graphics – you can quickly learn good and bad patterns of game development.

Here Bob Nystrom, the author of Game Programming Patterns (free and worth checking out), describes some of the classic ECS issues he ran into when he built his roguelike game. Definitely worth the 20 minute listen as a good introduction.

Reflection: “I would have done better” and other lies we tell ourselves

Reflection: “I would have done better” and other lies we tell ourselves

As part of my new year’s activities, I decided to reflect a bit on last year’s personal lessons. Maybe they’ll help others.

2020 will go down in the history books. It was astounding how quickly our modern world was rendered helpless and then teetered into civil unrest multiple times. We saw shortages of sanitizers, toilet paper and food, saw the crippling of whole economic sectors (dining, travel, live performances, etc), a new shift to working remotely, the end of most air travel, and governments that have struggled to develop and implement policy. Civil unrest in various places reached dangerous levels. In Oregon, we had over 100 straight nights of riots and record severe forest fires.

The human costs are also tremendous. People across the world have been quarantined in their homes and dealt with the stresses of isolation, remote work, job losses, home schooling, and the stress of constant contact locked in with family members. We have spent holidays alone, seen the end of social gatherings, parties, sporting events, concerts, church services, and other social outlets. Many of us have experienced the death of a loved one on top of all this. Substance abuse, mental health issues, domestic abuse have all gone up by dangerous levels. The full human impact will likely only be known years from now.

Self-care to the rescue – partly

From the beginning, experts recommended a lot of great self-care ideas that were extremely helpful: maintaining regular work and sleep schedules, daily exercise, eating well, creating separate work/home spaces, regular social connections, practicing self-kindness, focusing on daily goals, and maintaining covid-safe behaviors. Having separate work/home spaces was particularly helpful for me.

As a person without a spouse, children, or family nearby – isolation turned out to be the most difficult part. I could tell my mental health was suffering after a few months – the monotony of working in my house every day with minimal in-person interaction and few weekend opportunities to decompress began to wear on me. As I experimented with self-care methods, I quickly discovered things that worked and didn’t. Some lessons I learned:

  • “Drive” to work each day: I quickly found that staying in my house every hour of every day was driving me batty. I started getting ready for work each morning at the same time, quickly checked emails/important updates, grab my morning tea, then went out in the car and ‘drove’ to work. I usually drove a set route with morning mass then returned home. I would go directly to my work space at home and go to work. It really helped me separate home/work time mentally.
  • Weekend plans: Hope is fostered and monotony is broken up by plans you look forward too. I would try and make plans to hike a trail or do something each weekend to look forward too. I did a lot of hikes of Hamilton mountain, trips to sit and read on isolated sections of the Oregon beach, and visit the significant other’s ranch in 2020.
  • Limit social media and news: How much time during the day are you spending mental energy on some interaction, share, post, or discussion you had on social media? You only have so much time and emotional energy to spend in a day. What are you spending your energy on?
    Studies have continually demonstrated that social media is largely not healthy for you. News sources have also increasingly become far more interested in clicks than the truth, promoting extremism, and are regularly incorrect and manipulated by both domestic and foreign interests.
    To that end, I pretty much got off of my social media accounts and limited myself to 5 minutes on news sites, one login a week on others, and no commenting or up/down voting. I helped myself by setting up browser rules to block me from places like Facebook, most Reddit forums, and most domestic news sources that fail the sniff test. I continually culled the websites I visited until only high quality, constructive, educational content remained.

These are solid practical lessons, but we are spiritual beings as well. What did I learn there?

Faith seeking understanding

As I struggled through the effects of the pandemic and lockdown, I found myself turning more and more to prayer to ground me. I was definitely coping, but it sure didn’t feel great. My soul ached, so I turned more and more to prayer – and morning streamed mass became the cornerstone of my day. It was a year-long journey of learning:

  1. “I would have done better”
    One characteristic of our current society is to look at history and brag about how much better or differently we would have done things. This is not new, people did this even in Jesus time:

    “Woe to you, teachers of the law and Pharisees, you hypocrites! You build tombs for the prophets and decorate the graves of the righteous. 30 And you say, ‘If we had lived in the days of our ancestors, we would not have taken part with them in shedding the blood of the prophets.’ 31 So you testify against yourselves that you are the descendants of those who murdered the prophets.” – Matthew 23:29-31

    During a series of masses, the daily readings were about the Israelites in the desert (Exodus). This year, however, those stories really rang much closer to home. We look back at the stories of the early Israelites in the Old Testament and condemn them for their rebellions in the desert, their straying from God time and again. “Surely we would have done better!” we tell ourselves.

    In praying about the hardships of the lockdown, my own pride and selfishness was called on the carpet. I struggled to deal with the shortages of foods, toilet paper, and the inability to go out or enjoy previous activates. Yet, these were really problems of mere convenience, not life and death or hunger as many are facing. The Israelites wandered through the desert for 40 years – eating the same manna and water they trusted to come each morning. When they were near death without water, springs were open for them in rocks. They were constantly homeless, wandering in a harsh desert, eating the same food every day, for years and years – completely dependent on God who often threw them curve balls. I struggled after 2 months. Others were suffering far more than me.
    Sisters and monks that live in community give up all their possessions and live together – working towards the good of all under a vow of obedience. Some orders never leave their monasteries for the rest of their lives – living with whomever joins. Eating, wearing, and enjoying only what is provided. Living together every day, as one monk I know put it, until your rough edges get rubbed off. Just like the Israelites in the desert. Much like many families are experiencing now locked in together today.
    All of this made me consider the lessons of Exodus and the Christian journey through life. We are simply travelers in this world. Our hope and trust must lie in God to provide all we need. Yet, what is provided is rarely what we expect, would choose, or even on time – but it is what we truly need. We often long for the flesh pots of our own desires, choose our own ways, and rarely see living on manna and wandering a desert as preferable.
    So, if you want to really know how you’d have done in religious life or as an Israelite – ask yourself how well you did with lockdown. I for one realized a LOT of my shortcomings and how much more about love I need to learn.
  2. Thankfulness: Perfect love casts out all fear
    As the pandemic went on, national news grew steadily worse and local unrest/forest fires just kept going week after week. I increasingly noticed interactions (both in person and online) becoming more and more negative – to the point I often felt worse after talking with many people than before. Hope was being replaced by anger and fear – and growing isolation.
    In recognizing my own growing negativity, a centuries old method came to mind – turn to the opposite virtue of the vice. Here, John tells us what is the opposite of fear.

    There is no fear in love. But perfect love drives out fear, because fear has to do with punishment. The one who fears is not made perfect in love. 1 John 4:18

    How do you find love in the middle of so much negativity? There is only one perfect love – and that is God’s love for us. So, despite the world falling apart all around, how do I focus on that love? How can I take stock of the love shown me?
    Going to mass was a great way for me to hear those stories of Jesus’ love for me. Reading another. Prayer and thankfulness are excellent personal ways to do exactly this. They allow a profound personal connecting and recognition of love in your life and remind me of my mission to become love for others.
    I would often pause the stream of morning mass at the prayers of the faithful. I started thanking God for every good thing that I could think of – since that is the part of the mass in which our gifts are brought forward in thanksgiving. I realized how much I had to be thankful for. I was healthy. I had a place to live, friends, a job, and the list went on. I started to feel rather selfish knowing others were suffering far more than me, and here I was complaining instead of helping. It turned me from focus on my issues to wanting to help those that were suffering far more than me.
    This, in turn, led me to acts of charity and grace for others. Instead of railing about all that was wrong, I made donations to charities I knew were helping. I went through my house and spent time sorting things for donation. I contacted friends doing good things to support them.
    In interactions, I changed the tone of conversations by asking friends to share one thing we were thankful for that day.
    Finally, I stopped exposing myself to endlessly negative streams of news and social media. It wasn’t about ignoring the world – but curating out the consistently negative sources.
  3. Truth: Let your ‘yes’ mean yes, and ‘no’ mean no.
    This was the hardest and most embarrassing lesson for me. In all the social and political unrest – it was easy to get wrapped up in arguments and sides forming on the news, social media, and with friends. Sadly, I admit I got myself wrapped up in it – and nothing good came from it. Instead of being a conduit of sharing Christ through me, I got wrapped in the same war of words, insults, divisive memes, put-downs, dehumanization of others, insults, and spreading of half-truths that was becoming rampant from all quarters.
    I started to recognize something was wrong by noticing how much emotional energy and raw time each day I was spending on having arguments in my head, with others, and ensuring I was posting and arguing with the other sides. As hard as this is to admit, I finally realized the depths when I started playing one side against itself on one social media interaction – and recognizing others were doing the exact same things. When I prayed during my reflection on the day – it hit me like a ton of bricks. I felt Jesus powerfully speak directly to me via the reading:

    “Let your ‘yes’ mean yes, and your ‘no’ mean no. Anything more than this is from the evil one.” Matthew 5:37

    As Christians, we profess to believe that our hope is in Truth – the one truth that is Christ. We put our whole hope in knowing that if we love as Jesus taught us – we ultimately will be victors over this world. Do I truly believe that I should respond with love, even when others do not, that this is the way? Even when it seems more clever to ‘play politics’?
    Jesus came to this world and transformed it by offering love, forgiveness, and speaking the truth always. In every instance and with every person. He lost his life because of it – dying like a common criminal – but that truth has endured for over 2000 years in spite of every effort to destroy it.
    If I truly believe this, then I must put all my trust in following the way of Christ. To love my enemies. Pray for those that persecute me. To ignore the rhetoric and spend my time seeking out the lost, the orphan, the widow, the imprisoned, the downtrodden, the forgotten and love them. To love as Christ loved me, and above all, to always speak the truth. Anything else is based in evil.
  4. We are citizens of heaven
    Here in the US and Portland, civil unrest and forces are attacking our Democracy via the use of violence and intimidation. Extremist who have abandoned Democratic ideals are coming out of the woodwork to attack elected officials, public buildings, and core democratic principles.
    As a good priest friend reminded me, in this life, we are all sitting in an airport. We all have a ticket with a date and time when we will depart for our final destination in eternity. While we work ever for the best world we can create – our ultimate hope is not here but on that which is to come. Jesus has given us the criteria for our final exam, it is only for us to carry it out. How well did I love today – especially my enemies and the needy?

Final thoughts

This has been a brutal year. I encourage everyone to spend time reflecting on what this last year has brought you through. For believers, there are countless lessons that can be learned from this time of difficulty and new ways to connect our suffering with Jesus for healing and to find comfort in our grief. Times of trial can be times of great growth – if we let them and invite Christ into the wounds.

Never has there been a greater need for compassion, forgiveness, and love. Spend some time each day in silence and listen to how God is trying to knock at the door of your heart.

These dreams are made for you

These dreams are made for you

Media Molecule’s latest title Dream is a creation platform that allows users to make virtual worlds/games and then sharing them with others.

It’s first year has seen some great creations – with a lot of content created by some amazing artists and game developers. With such a powerful creative engine/tool available for anyone and everyone to create amazing worlds and share them – you’d expect it to be a panacea for both developers, artists, and players.

In reality, however, it seems like there is a problem. While there is no shortage of amazing creators and amazing art, music, and playable creations, there seems to be a real shortage of players. This actually surprised me.

Are these issues new, part of larger issues, or exposing issues we’ve already had before? There are complaints about getting visibility to your creation above the noise – much like mobile app developers and indie musicians have had for years. Is the continuing lower bar of entry and enabling anyone to create whatever they want leading to oversaturation?

Give the linked article a look – it’s a great discussion on how the whole game industry might be going.

Automated Sand drawings

Automated Sand drawings

I’ve seen these kinds of art devices before – but they are big corporate looking things and run thousands of dollars. “The principles behind them can’t be that complex”, I thought. But there are some tricky bits I didn’t think of before – and this guy does a great walkthrough.

Personally, I would likely have shaved off the bottom part of the marble to create a flat spot and put felt there, so you don’t disturb the lower pattern as much. Also, I wonder if a specialized plexiglass would have worked better instead of glass to help hide the noise.

When all is said and done

When all is said and done

Existential crisis. We all face it at some point in our lives. Did I make an impact? What happens when I die? Did I matter at all? It’s a Wonderful Life is all about one man’s existential crisis. I’m also reminded of the line from movie Blade Runner.

I’ve seen things you people wouldn’t believe.

Attack ships on fire off the shoulder of Orion.

I watched C-beams glitter in the dark near the Tannhäuser Gate.

All those moments will be lost in time, like tears in rain.

Time to die.

Roy Batty – Blade Runer

When we think all the way back to the stone age – one is confronted by so many lives that were lived and never remembered. No matter how much we accomplish, how rich, how powerful we become – no matter what amazing things we do, death and obscurity await us all in a long enough timeline. It is sometimes said that you only exist as long as one person remembers you. Or as long as something you did or created impacts another life. So what happens when that is finally gone? Do I really matter? Does any of it matter?

For me, it’s knowing those even when the world forgets – those moments and our lives are not lost. Even when the last person that knew me dies or the last impact of my work fades – all of it comes with me into eternity.

Because there is always someone that remembers. They were all shared with one who loved me and was with me my whole life. We spend eternity together remembering those moments and witnessing how my actions echo through time – in the glory of perfect joy. For Jesus was with me yesterday, today, and through all eternity – and he loves me more than I can even love myself.

That is where true hope lies.

Pulse – analog animation using glass panes

Pulse – analog animation using glass panes

This artist was inspired by patterns she saw in Yellowstone’s hot springs. By drawing different patterns on multiple layers of glass and moving lights across and between the planes, she creates a unique animation effect.

Made me wonder if projection mapping could perform the same thing more easily – but this is a really cool analog method.