Experimental Game Dev Interviews — The First Game Dev Podcast Ever
RSS icon Home icon
  • Why game developers did not come up with crypto currency…

    Posted on September 4th, 2021 IndieGamePod No comments

    Well…

    I look at the entire crypto currency industry and I do wonder…why game developers or indie game developers did not come up with CryptoCurrency….of course…it might be that a game developer did…

    But I am more amazed that game developers were using the virtual currency before cryptocurrency finally got things right.

    But there were some things…missing things or concepts…that I think game developers/designers missed…that prevented them from developing cryptocurrency. I think it would be nice to explore the concepts missed.

    This post focuses on that.

    First, it is important to note that there were games in the early to mid 2000s that were using virtual currency in games. Games like EVE Online even hired economists to help balance their in-game economies.

    Other game companies were happy to use the two-tier premium/common currency model. Players would buy premium currency with cash but be able to earn common currency within the game itself.

    Then there was the idea that inflation in a game economy adds to the fun of things.

    So I see there were a few missing concepts in the mid-2000s incarnations of virtual currency.

    First…the idea game developers considered was to use currency to help control in-game economy. The in-game interactions.

    There was no concept that the currency could be an asset. Even when players would try to use the currency as assets…something that could be sold outside the game. Game companies would sometimes try to limit the use. They might even prevent the sale itself.

    One missing concept was the idea that the currency should be or could be an asset that should be able to be sold in the open market. By not considering this…there were benefits…namely, one did not need to worry as much about in-game economy balance or security.

    Which brings up another thing that game developers missed…the idea that these “assets” needed to be protected. They should have been protected in a way that would make them portable or moveable outside the game.

    Games kind of allowed in-game trading…but once again…the game or the game company itself needed to be a mediator for these transactions…and as was seen…some of these companies would not allow trades or transactions to happen outside the game.

    So the missing concept was an open source distributed ledger…something where the game company did not own…but would participate in…by adding to the ledger to confirm certain transactions.

    This ledger…as we’ve seen in the case of cryptocurrency…would need to be run by distributed nodes and they would need to be paid or receive some reward. Because the game economies were mainly closed systems where folks could not easily benefit from in-game rewards they could get for hosting…since there was no easy way to sell things on open markets.

    So this was another mistake.

    The other thing was the idea of cheating or safety of the game currency. Because there was not attention paid to concepts or ideas that would make the game currency feel like real currency…people would not get behind it. These concepts would include things like portability of the money, ability to use money for goods and services outside the game, etc.

    One other issue was the goods/services the in-game currency represented. You could only do playful or entertainment things. So it was limited. It was a good start…but the game design was not set up to allow other types of activities that could be considered work-related or useful for other things.

    The game developer or designer needed to realize that the currency had to be used or redeemed for things outside the game itself. The game would be one users of the currency, but there could be other services that could also use it. Those uses needed to be beneficial to people in other ways.

    One could say … of course one should not take in-game currency seriously … since you could not use it to buy food or shelter. Sure, that is one things…but as we’ve seen…there are so many digital goods and services…that could benefit from a currency…and could have been used to purchase those things…like a network effect.

    I think that is one other thing to consider…is that it should have been where game companies made it easy for other companies or people to accept the currency for out-of-game services that supported in-game things. Provided code base or source to have this happen. It would have added more value to the currency itself.

    Then there is the issue of the design of the game itself…that would not really benefit or build on the concept of atomic elements of currency. Most of the design was used to make a more profitable business model. But where there games where the gameplay itself built off the properties or effects of tokens?

    Inflation management in games. This was not always taken seriously and hurt any real consideration of the currency use itself. Maybe the concept of a limited amount of overall currency…as we’ve seen done with cryptocurrency…might have helped.

    Finally…game developers were just looking to provide entertainment…in a way that made the money to focus on the game itself…and in that case…the virtual currency did work.

    It really made many game companies more viable…but it was mainly because the opportunity of a virtual currency was so huge…that hundreds of millions or billions made is nothing compared to the size of the market.

    So I suppose…thinking of this list…and I know there are more…there were many reasons as multiple levels of the game design that prevented game developers to pioneer cryptocurrency.

    So now let’s consider game currency 2.0…this would be game currency that would work with CryptoCurrency in its current state…to make game economies and business models that might work better for this era of cryptocurrency.

    1) The in-game currency should be tied to one of the cryptocurrencies. So that folks could cash out the currency for an cryptocurrency asset. This needs to be set up so that miners could come in and host the game itself and get paid to provide compute services.

    2) Inflation considerations taken into consideration up front…with a clear and open way to address inflation or a limited number of coins through lifetime of the game.

    3) The game would need some kind of block chain variation that would help to clarify token generation and exchanges … so that the currency could be taken seriously.

    4) Game developers would need to be able to let folks use the currency outside the game itself. This could be set up by the game developers … where they exchange in-game currency for the cryptocurrency…and put it in a players wallet.

    5) The game itself would need to make use of game currency to do unique things not doable or emotions in-accessible with other game designs. We saw semblances of potential with some social and multiplayer games in the mid-2000s…like games where you could buy and sell people for in-game currency. Folks would buy the game currency to do this fun thing. The mechanic was built on the virtual economy…but there was no easy way to be able to sell the game currency earned in the game.

    There was also other things missing to make the currency an asset class.

    Ultimately, it seems like game developers … to be able to develop and make the most use of potential new business models that would help games generate revenue…would need to be able to create a new token/currency that is tied to cryptocurrency and offers some unique goods or services or transactions or interactivity…aside from just entertainment…to provide utility to players. So that their investment in the currency would provide unique utility that might also have some fun use cases.

    an example could be a game that lets folks interact with their smart contracts…or smart contracts that control other people…are managed…or created in this game. Now this might not be the best example…but it does show how games could be built on tokens to do new forms of gameplay or interactions.

    These could be the new “Player vs. Player” games…

    Yet there would be other things like “Player vs. Environment” games…where folks might interact with real-world tokenized concepts to do things or new interactions. The game would profit from providing unique services or interactions around these concepts.

    The game’s business model could then be to take a percentage of a sale…but everything else around the game…including the game itself would be open source and free?

    Games would need to be more than an interaction system…but a token generation system…where the tokens themselves could have different roles and properties that allow folks to interact and benefit from the game token ecosystem. Some of these tokens generated could also feed into certain gameplay itself.

    I wrote a book on “game utilities” a while back…and it was kind of interesting…I do wonder how this is different than the data mechanics mentioned in that book. I think one thing is the tokens…might have properties outside the data itself. These properties then help it to be used in new ways or other ways.

    With the advent of metaverses…I see that the in-game economies that adhere to some of these principles and help to then treat metaverses as virtual nations that would then give the metaverse new effects that would make it more attractive than other metaverses.

  • Raspberry Pi Pico now out…

    Posted on February 12th, 2021 IndieGamePod No comments

    Raspberry Pi has a new board out…it’s a micro controller…

    Check out some of the game projects here…
    https://www.raspberrypi.org/documentation/pico/getting-started/

  • Godot 3.2.1 is now out…

    Posted on May 3rd, 2020 IndieGamePod No comments

    Godot 3.2.1 is now out…

    It seems nice.

    Check it out here…
    https://godotengine.org/download

  • Godot on Raspberry Pi 4

    Posted on September 1st, 2019 IndieGamePod 8 comments

    This tutorial will be about how to get Godot to work on a Raspberry Pi 4.

    I recently got a Raspberry Pi 4, 2 GB version.

    I read about other folks that tried to get Godot to work on previous versions of Raspberry Pi and did not expect things to go well. It seems like getting Godot to run on Raspberry Pi was not a priority. It seemed like if I could get Godot to run on Raspberry Pi, it would be very slow.

    I decided to see what happens anyways. I was able to run Godot on Raspberry Pi 4…and it seemed to run all right. I’ll know more as I try to do more dev on it.

    Here’s what I did to make it happen…
    I downloaded the latest Godot source…3.2 dev… and compiled it on the Raspberry Pi 4. It took about an hour.

    To compile the source properly…I had to do a few things…
    1) Keep this post for reference…
    https://www.reddit.com/r/godot/comments/af1cji/compiling_godot_31_for_raspberry_pi/

    Keep this one for reference too…if you want to overclock…
    https://bits.krzysztofjankowski.com/raspberry-pi-4-as-perfect-indie-console/

    2) I had to make sure I had all the necessary libraries needed for Godot to properly compile.

    I used this page for reference…
    https://docs.godotengine.org/en/3.1/development/compiling/compiling_for_x11.html

    Since I think Noobs is based off Ubuntu/Debian…I used the one liner provided to install the relevant libraries…
    sudo apt-get install build-essential scons pkg-config libx11-dev libxcursor-dev libxinerama-dev \
    libgl1-mesa-dev libglu-dev libasound2-dev libpulse-dev libfreetype6-dev libudev-dev libxi-dev \
    libxrandr-dev yasm

    Install clang compiler…
    sudo apt-get install clang

    It was not enough and I had to install a few more libraries. I found out the exact libraries I needed when I tried to build the source with the following command…
    scons -j 4 platform=x11 module_webm_enabled=no tools=yes use_llvm=yes CCFLAGS="-mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -mlittle-endian -munaligned-access"

    If it builds, cool…if not, SCons might mention the library/thing missing as you try to build. use apt-get to install the missing libraries.

    Once you do that, you will be able to specify x11 as the platform.

    One other note is that you will need to disable the webm module since it seems to cause errors when you build with it.

    To do that, you add this flag to the build command…
    module_webm_enabled=no

    Since Raspberry Pi 4…is a quad core…I used the -j 4 command…to help make the build go faster. I think it then uses all 4 cores for the build process.

    Based on feedback from others and more time with development, I realize that some compiler flags need to be added…to make sure the performance of Godot is somewhat decent…
    CCFLAGS="-mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -mlittle-endian -munaligned-access"

    I did try to build with 64 bits, but I do not think it went well…so I just went with the default…I think that is 32 bits.

    The final build command looked like this…
    scons -j 4 platform=x11 module_webm_enabled=no tools=yes use_llvm=yes CCFLAGS="-mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -mlittle-endian -munaligned-access"

    also, if you run out of virtual memory, just run the scons command again….it should pick up where it left off…so run this line again…
    scons -j 4 platform=x11 module_webm_enabled=no tools=yes use_llvm=yes CCFLAGS="-mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -mlittle-endian -munaligned-access"

    3) Once it built, I went to the bin subdirectory and ran it. It seemed to run fine and I was able to develop on it. I made a simple cube and rotated it every frame. I ran it…and it went really well. There was no lag that I noticed.

    I then wanted to see if I could make it so I could deploy the project to raspberry pi 4. To do this, I tried various things. The closest way I could get this to work was to build a version from source that was a release target but still had tools.

    Then I exported the project as a zip file. I had to move the release version of godot to the directory with the zip file.

    I then ran the godot release version and it loaded the project and ran the rotating cube directly.

    It was nice. But still, I think there must be a better/faster way to do this.

    The ideal situation would be that the executable would be built and then could be run…so I do not need to have the godot release build and the files in the same folder.

    One other note…once you build Godot, the object files may take up a few gigabytes of space. If you need space on your sd card, you may want to remove the object files…go to the terminal, then go to your godot-master directory and type in the following…
    scons –clean

    There are 2 dashes before the clean.

    It will delete the object files and give you more space on your sd card. Of course, it also means that scons will have to generate the .o files again if you want to compile the source code again.

    Post comments or questions below 🙂

  • Custom Servers in Godot…

    Posted on August 17th, 2019 IndieGamePod No comments

    I’ve been playing around with Godot some more…and did some of the tutorials listed in the Godot documentation.

    I tried to do the custom server tutorial mentioned in the Godot documentation, and noticed some missing gaps with the documentation…this post helps to address them.

    Source for the module directory part of the tutorial could be downloaded here…
    http://www.indiegamepod.com/podcasts/hilbert_hotel_custom_server.zip

    The script to attach to spatial node in the second part of the tutorial could be found here…
    http://www.indiegamepod.com/podcasts/Spatial.gd

    First, a little bit about custom servers in Godot.

    Godot has modules and Godot has servers. The graphics and physics of the game engine are “servers”…conceptually, it seems like “servers” have their own thread/resources and run in parallel with other servers.

    This is a bit different than modules that seem to work within the framework of an individual thread.

    This tutorial starts from the Hilbert Hotel custom server tutorial mentioned in the Godot documentation

    https://docs.godotengine.org/en/3.1/development/cpp/custom_godot_servers.html

    To create a custom server, go to your godot source folder…

    Go to the “modules” subfolder

    Make a new folder called “hilbert_hotel” within the modules folder.

    Now create hilbert_hotel.h in the new folder…
    Type in the stuff mentioned for hilbert_hotel.h here…
    https://docs.godotengine.org/en/3.1/development/cpp/custom_godot_servers.html

    I had to add a few other things to get this to compile…
    Note…add these *after* the includes for the core .h files mentioned in the documentation

    #include “_hilbert_hotel.h”
    #include “InfiniteBus.h”

    Let’s move onto hilbert_hotel.cpp
    Type in the stuff mentioned for hilbert_hotel.cpp here…
    https://docs.godotengine.org/en/3.1/development/cpp/custom_godot_servers.html

    Replace this line…
    InfiniteBus *)bus = bus_owner.getornull(id);

    with this…
    InfiniteBus *bus = bus_owner.getornull(id);

    Next, make a file called from prime_225.h and copy the code for prime_225.h mentioned here…
    https://docs.godotengine.org/en/3.1/development/cpp/custom_godot_servers.html

    Next make a file called InfiniteBus.h and then copy the code for InfiniteBus.h mentioned here…
    https://docs.godotengine.org/en/3.1/development/cpp/custom_godot_servers.html

    To allow Godot to properly used the custom server, a dummy class needs to be made. It is not quite clear why this class needs to be made, but Godot needs it to make sure it references the right class instance when the server is called in the code.

    The dummy class will be called…
    _HilbertHotel

    This is basically a class of the main custom server class with an underscore added at the beginning.

    In _hilbert_hotel.h … copy it from the tutorial page then add this to the top of the file…
    #include “hilbert_hotel.h”

    #include “core/list.h”
    #include “core/object.h”
    #include “core/os/thread.h”
    #include “core/os/mutex.h”
    #include “core/rid.h”
    #include “core/set.h”
    #include “core/variant.h”

    In _hlibert_hotel.cpp…copy it from the tutorial page and add this at the top of the file…
    #include “_hilbert_hotel.h”

    In the directory…be sure to add the file…
    config.py
    it should have the following…
    def can_build(env, platform):
    return True

    def configure(env):
    pass

    in the directory…be sure to add the following file named…
    SCSub

    # Put this code into the SCSub file…
    Import(‘env’)

    module_env = env.Clone()
    module_env.add_source_files(env.modules_sources,”*.cpp”)
    module_env.Append(CXXFLAGS=[‘-O2’, ‘-std=c++11’])

    ###############################
    This helps SCons build your custom server.

    Once done, go to the main godot folder … then run SCons to rebuild everything.

    Once it builds properly…go to the

    /bin directory where the newly built app is placed…open it up and use the server…here is what I did…I made a new scene and added script to the Spatial node to test it out…I had to comment out HilbertHotel.finish() to get it to work properly…

    extends Spatial

    # Declare member variables here. Examples:
    # var a = 2
    # var b = “text”

    # Called when the node enters the scene tree for the first time.
    func _ready():
          print(“Start Debugging”)
          var rid

          HilbertHotel.connect(“occupy_room”, self, “_print_occupy_room”)
          OS.delay_msec(2000)
          rid = HilbertHotel.create_bus()
          OS.delay_msec(2000)
          HilbertHotel.create_bus()
          OS.delay_msec(2000)
          HilbertHotel.create_bus()
          OS.delay_msec(2000)
          print(HilbertHotel.get_bus_info(rid))
          HilbertHotel.delete_bus(rid)
          print(“ready done”)
          OS.delay_msec(5000)
    # COMMENT OUT THIS LINE HilbertHotel.finish()

          pass # Replace with function body.

    # Called every frame. ‘delta’ is the elapsed time since the previous frame.
    #func _process(delta):
    # pass
    func _print_occupy_room(room_number, r_id):
          print(“Room Number : ” + str(room_number) + ” RID: ” + str(r_id))
          print(HilbertHotel.get_bus_info(r_id))

    Source for the module directory could be downloaded here…
    http://www.indiegamepod.com/podcasts/hilbert_hotel_custom_server.zip

    The script to attach to spatial node can be found here…
    http://www.indiegamepod.com/podcasts/Spatial.gd

  • Should Indie Game Developers Switch to Godot…

    Posted on July 17th, 2019 IndieGamePod No comments

    You can download the podcast here…
    http://www.indiegamepod.com/podcasts/godot-podcast.mp3

    Or listen to it here…

  • Make Real-Time Multiplayer Games Fast…

    Posted on August 2nd, 2017 IndieGamePod No comments

    Jordan, developer evangalist of PubNub, discusses the design considerations for real-time multiplayer games…

    You can download the podcast here…
    http://www.indiegamepod.com/podcasts/pubnub-2017-podcast.mp3

    Or listen to it here…

  • An Indie Reinvents Their Life To Become A Game Developer…

    Posted on August 6th, 2016 admin No comments

    Adam, developer of Mr. Green: Mess Machine, talks about self-reinvention to become a game developer…

    You can download the podcast here…
    http://www.indiegamepod.com/podcasts/mrgreen-podcast.mp3

    Or listen to it here…

    [wp_youtube]PdH5k78BKpw[/wp_youtube]

  • The Indie AR Developer Before Pokemon GO, Part 1

    Posted on July 16th, 2016 admin 1 comment

    Corey, from ZenFri, discusses Pokemon Go and what he learned from that game as well as the mobile Augmented Reality game he worked on…

    You can download the podcast here…
    http://www.indiegamepod.com/podcasts/zenfri-2016-part-1-podcast.mp3

    Or listen to it here…

    Of course, we interviewed Corey about 1 year ago…feel free to check out the archives to hear the interview…
    Zenfri 2015 Interview, Part 1
    Zenfri 2015 Interview, Part 2

    I also interviewed Corey about 3 years ago…feel free to check out the archives to hear the interview…
    Zenfri 2013 Interview, Part 1
    Zenfri 2013 Interview, Part 2

    [wp_youtube]bSW8AyPzWuo[/wp_youtube]

  • Voice Acting In Indie Games…

    Posted on June 10th, 2016 IndieGamePod No comments

    Erik, from Seespace Labs, talks about voice acting in indie games…

    Here is a link to their asset pack on the Unity asset store…
    https://www.assetstore.unity3d.com/en/#!/content/52987

    You can download the podcast here…
    http://www.indiegamepod.com/podcasts/voiceover-podcast.mp3

    Or listen to it here…