A picture says more than a thousand words, so without much ado, enjoy our development log number 75, including a first (animated) peek at the ship editor and a brief insight into currency pairs.
This week was still mostly dedicated to contract work, but I did get the technical foundation for currency brokers finished.
We follow the real-world analogy of currency pairs quite closely to make foreign exchange as easy to work with as possible: Each pair consists of a base currency and a quote currency. The base currency determines what you are trading in, the quote currency is what the price is quoted in. A real world example: the quote EUR/USD 1.2345 would mean that one EUR costs 1.2345 USD. While in reality, people seem to stick to a single currency pair for trading (EUR/USD, but not USD/EUR), in PU you will be able to trade both. And it’s perfectly legal to use arbitrage between the two to your advantage!
This is the current state of the ship editor prototype:
Building a ship with the prototype of the ship editor.
As you can see, the module list I started last week is almost complete now. It has a small preview image of the module, a name and a description. The yellow bar on the left highlights the currently selected module.
I added a few modules that probably will be in the game later on and created simple placeholder geometries for them. Adding modules to the the blueprint works like this: First a module is selected from the list. The editor then determines where it can be added and displays a small plus icon in the 3d view. The last step is to click on this icon and the module will be added. Similarly a minus icon is shown for all modules that can be removed.
The ruleset determining which modules can be added and where, as well as when a module can be deleted is currently only defined for the few modules we have. We want to create a modular system that scales to bigger ships as well, but I am getting ahead of myself, we’ll talk about that in the coming weeks!
A short work week and external deadlines make for a pretty boring development log. But those are the realities of indie game development…the money to pay the bills has to come from somewhere and even the most ambitious game developer needs a break every now and then. So Happy Easter everyone and see you again next week…hopefully with more news from our side :)
Due to an upcoming deadline for an external project I didn’t have much time for Prosperous Universe this week. At least the first draft of the new website design came in, so I’ll hopefully be able to release it within the next few weeks, including our forums.
This has been a pretty short week for me since I have been on vacation on Monday and the better part of Tuesday and Friday was a public holiday. At least I got some work done: Adding and removing modules from a ship blueprint works pretty well now and involves the server as well. This means that every action is persisted and even when the browser or tab is closed the work isn’t lost. No need for save buttons :)
On Thursday I started implementing a ship module list from which modules can be selected to be added to the layout. Once it’s finished it will contain all modules that can be added to the current design, with names, descriptions and an image of the module.
We mostly wrapped up work on our account management systems and are back at gameplay systems again. While Michi is already knee-deep in work on a huge new feature - ship construction - Martin is just getting started on another one - Foreign Exchange.
Sometimes it can be depressing how much time and effort goes into things that don’t feel like they are part of the game, as is the case with the authentication app I’ve been working on for the past two weeks. That said, I wrapped up work on the most important technical parts of this now, which means that we’re ready to launch the forums as soon as the visual design is in. And I can finally get working on actual gameplay again!
In that spirit, I spent my remaining time budget on initial preparatory work for the next big feature on my to-do list: Foreign Exchange. Each faction in PU will have it’s own currency and there will a central market place that allows players to exchange these currencies. I looked into how foreign exchange (or FX) works in the real world and what common terms and conventions exist. FX is a bit different from regular trade in that every transaction always represents both a sale and a purchase: When you buy X units of currency A for Y units of currency B, you are effectively selling currency B. This leads to some subtle differences in the technical and visual representation of a foreign exchange systems compared to our long-completed commodity exchange system.
FX is the last of the core features that make up our internal Alpha milestone. Once completed, all of the most important features of Prosperous Universe will be functional.
Last week I wrote about the new feature that I started designing and implementing: ship construction. So far the basic creation of blueprints is working and I started prototyping the editor.
Ideally the prototype will show us if we can achieve the ambitious goals we set for the ship editor: We want it to be a full 3D editor, meaning that the player will be able to place three dimensional modules and build unique ships.
I achieved a few goals on the way to this prototype. A new Tile is set up with a 3D context to draw into and I managed to load and display simple 3D models. The server and client now know about modules and how and where to form a connection between two modules. Players can click on icons in the scene to add modules. There is still a lot to do, but I think we’re on the right track.
Sometimes technical problems appear out of thin air and keep you awake at night. We still managed to get quite some work done: the community forum software is set up, the world editor got a facelift and we started a new feature!
Due to a technical emergency over at our other game, I didn’t have quite as much time for PU this week as I had hoped. Nevertheless, I continued work on our authentication app and implemented a basic working version of the single-sign-on interface required by our forum software.
Speaking of which, I also managed to install said software. It still needs a lot of configuration and a bit of polish in the design department, but it’s working and it’s already hooked up to our authentication app. So as soon as the the latter is completed and has received it’s final UI, we are ready to open the forums to the public. I’m very much looking forward to finally start building a community around Prosperous Universe!
When Martin and I met two weeks ago in the simulogics HQ we also spoke a lot about the game’s content and especially about the factions in the game. We created background stories for them, decided with how many colonies they would start when the game begins and other things. Since the players have to choose one faction to join when they start the game the factions are a quite integral part of the game. I spent Monday and Tuesday to integrate them into our world editor, so we can later integrate them into the server code. While at it, I also did a small refactoring of the world editor since it has evolved and grown quite a bit.
I then started a completely new topic in the second half of the week: blueprint editing, ship performance and production. This is a huge topic and will probably keep me busy for weeks so I’ll go into the details as I implement them. Nevertheless here’s a quick intro into what we are trying to achieve:
Ships are an essential part of the economy in Prosperous Universe. Since the players don’t play fictional characters like in role-playing games with stats and abilities to identify with, we want the ships to fill that void. To be able to do that we cannot have off the rack ships but rather modular ships that the players design and build themselves. It will basically work like this: A player creates a new blueprint for a ship. In the blueprint editor she can design the ship by placing components and modules and will see its performance parameters like mass, slower than light speed, cargo capacity, faster than light speed etc. Once a blueprint is finished and is valid it can be used to produce the ship in a shipyard.
This week I started with the creation of blueprints. I wrote UI and server code to create blueprint, show a list of all blueprints and open a specific one for editing.
We can’t wait to get started on the things we laid out last week. But before we can do that, we need to close some other remaining issues and generally rid our to-do list of tedious maintenance tasks and necessary polish for generally-done-but not-quite-finished features. Don’t let procrastination win!
After our extended planning meeting I wanted to get as much “small stuff” as possible off my table so I can get started on larger topics soon.
Besides quite a few con-calls concerning concept art and web design - both needed for the various stages of the panned launch - I fixed some minor issues that were still filed under the current milestone and took care of some necessary code hygiene, updating a few frameworks and tools to their latest versions. I also improved our pipeline for production builds of the client: The resulting artifact is now a lot smaller and comes with proper cache busting, so your browser try to reload the files as rarely as possible but when they have changed, it will never use an outdated version from it’s own cache.
On the week-end I started to work on a little application that we’ll use for login and account management while the game itself is still not publicly accessible and too unstable to hold account data. The application is necessary because we want to open an own discussion board soon and we want to have single-sign-on implemented from day one. So if you sign up to the forums in a few weeks, you will be able to use this very account to log into the game once it is available.
Originally my plan for this week was to finish the current chat features, then adapt the world generator to the changes in content we decided upon last week and finally start with the ship editor. Well, it turned out that everything is just a tad more complicated than I anticipated.
The idea for the latest chat feature is to have public channels, that are listed in a catalog and everyone is able to see these and join them. The motivation behind this is to enable the players to easily communicate with others, especially outside the private group channels they might have. Initially we wanted to give every system in the game an own public channel, but decided not to do so and rather let the players create the channels if they think they are necessary.
The main difference between public channels and the private group and one on one channels is that public channels are not persistent. If you join a channel you won’t be able to see its chat history, even when you have been joined before. There are no restrictions who and how many can join a channel. The channel will always be visible in the public channels catalog. The channels are also non-persistent in that they disappear when the last player leaves. There is only one exception right now: We created a “global” public channel that will always exist and every player will be joined as soon as she creates an account. New players will have a chance to ask for help that way. Of course the channel can be left at any time.