by alarial | Feb 20, 2016 | GameDev, Unreal Engine 4
Wow. It has already been a month since the last post! Time seems to fly when one is head’s down putting components together, testing out plugins, and dealing with sick kids. That said, I have been tied up with those things lately. I’ve been balancing my time between writing basic character building blocks and trying to integrate other pieces such as inventory management, animation, and per-bone damage. All of these things being first pass, of course. My other game dev is still acclimating himself to the switch over to C++ and doing tons of research on other things that will become very important very soon.
I’ve decided to take the transparency approach to reporting what we are working on once we start hitting the alpha stages. I am going to work on a way to pull the data from our internal tracking system into a more consumable format and location. This will make sure we can be held accountable for our work and it will be easier to see feature and bug progress.
I did see something really cool recently, though. It looks like Epic is working on a Blueprint to C++ conversion tool. This would essentially break down your Blueprints into native C++ when it builds for release. While you wouldn’t really be able to debug them via your code editor, it would eliminate the performance hit Blueprint codes takes from basically having to run inside a virtual machine on game execution. While this won’t significantly change my decision to move over to C++ as my primary choice for development, it will make me less hesitant to implement in Blueprint when it would be easier or make more sense there.
by alarial | Jan 24, 2016 | GameDev, Unreal Engine 4
An important part of any distributed development team is an effective source code management (SCM) solution. Typically I’m a Git kind of person. I like the branch management and the simplicity of use, along with the wide variety of clients available.The specific SCM solution chosen is less important than whether the solution meets the purpose it is meant to serve. I am a big advocate of using the right tool for the job and there are some choices that would not have made sense for our development workflow. Thus, I was open to other solutions for game development purposes. My goal was to set up an SCM that facilitated development structure between myself and remote members that also integrated well with Unreal Engine 4 (UE4). This narrowed my choices considerably because I wouldn’t touch one of the three options, SVN, with your worst enemy’s face.
Public providers
Git is an option, but we ran into some problems very early on with this because arguably the most popular free and private-by-default provider, Bitbucket, enforces a limit on the size of the repository. This makes game development collaboration a bit harder because uncompressed game resources get pretty large pretty quickly. We hit our limits with a couple providers very quickly as we were bringing in assets to test and checking in our changes. These problems didn’t rule out Git, but it did cause me to reevaluate the solutions.
Bitbucket server
I still wanted to use Git, so I went out and grabbed the latest copy of Bitbucket server and installed it locally. I then fought the access battle of my overprotective network (by design) and a server trying to accept incoming connections. I was able to get it working from within the same network, but anything that required entry from the public internet died quickly. I tweaked settings for a while before deciding to move on because it wasn’t a good long-term solution anyway. i needed something that was not dependent on compromising my own security by exposing my IP address rather than routing through the VPN.
Perforce
I noticed when I first starting using UE4 that Perforce support was built into the editor from the start. I remember trying to get something working back at one of the hackathons, but getting everything up and running just didn’t materialize fast enough to consider it a viable option for that 24-hour period. I liked the concept of using it because from everything I have read, this SCM has a much wider adoption across larger game development shops and many other software companies. One of the advantages I see with Perforce is that it doesn’t care about repository size or large files (Git doesn’t like large files so much). So I decided to give it another shot at setup and see what I could make happen.
Perforce Cloud
My first attempt with Perforce was to use the Helix Cloud service they offered for free. This was only up to 5 GB, but it was plenty large enough to test out and see if we wanted to transfer over to a full installation. Unfortunately it didn’t work as planned. I was not able to get UE4 happy with the connection string and the information I was able to dig up online was not very helpful. Considering I didn’t know what a good installation looked like or how to solve problems with a cloud service I couldn’t touch, I decided to just go for the full thing myself.
Perforce Full Server Install
Perforce offers a free license for up to 20 users. This is awesome for smaller teams like mine and makes it really easy to get large-scale functionality at the micro scale of my team. However, because this is an enterprise-grade solution, that means the installation should be fairly difficult and convoluted, right? Not so much! The problems I ran into had nothing to do with difficulty installing or even basic setup. Let’s run through the issues I had getting a full Perforce server installation up and running and connected with UE4. I will point out all my servers were Ubuntu 14.04 for these installs so your experience may differ if using a different backend.
I looked up installation directions directly on the Perforce website. The website gave directions for adding the APT repository key to the keychain and adding the source to the sources list (which were actually correct and worked perfectly!). I had to install 1 package, helix-p4d, which installed a few other dependencies and then told me very simply how to configure a new Perforce server. After choosing some options, the server was installed and ready to go. What? Yes. The actual server setup on Ubuntu only takes like 5 minutes. So now we get into the issues I faced after server install.
- My first installation was on a Digital Ocean droplet I already had out there. Everything installed fine, but I couldn’t reach it from UE4 for any amount of coaxing or sugary drinks. I was able to set it up in the Perforce Visual client (P4V) and add files to the depot, but connecting via UE4 just wasn’t happening. I tried messing with it for a while and finally decided that maybe my problem wasn’t my settings, maybe it was my location.
- I set up an EC2 micro instance on AWS. Exact same installation steps because exact same OS. I was also able to connect via P4V client, but UE4 was having some problems. I started off with errors about the Unicode format. UE4 was complaining that a Unicode client required a Unicode server. First, I wasn’t aware that UE4 editor presented itself in a Unicode format. Second, I couldn’t find any information online about how to change this on the editor side. So, I turned to the server side and ran the command that was meant to irreversibly convert the installation to Unicode mode. It made no difference to the UE4 client. No matter what I tried to change or tweak, the client error would tell me that a Unicode client required a Unicode server.
What Finally Worked?
I set up a new EC2 Ubuntu server and chose Unicode support during Perforce server installation. My P4V client loved it! My UE4 client loved it! There was lots of love all around! After getting all this working, I had another team member validate my setup by having him go through just the client-side installation and setup procedure. As of last night, he was able to perform the setup successfully on both his laptop and desktop.
Conclusion
This past week I’ve felt pretty useless as I was not able to write any code, but getting source control working and validated from external clients was a huge win. This means we have a much easier path as we move forward and we don’t need to rely on proximity to onboard new team members (all code was hosted on my NAS previously). I think what surprised me the most was the lack of information surrounding Perforce setup with UE4. I found several guides and videos, but everyone essentially assumed a Windows installation for your local server, not a remote Linux derivative. To me that makes the most sense for remote hosting, and maybe it is just that larger studios don’t need online guides or tutorials. For me, it was a week-long frustrating learning experience that paid off eventually. I can only hope that all of my frustrations end up the same way.
I know I didn’t go into great detail as to setup or fixing of different pieces of this SCM experience, but we’re already approaching the standard college essay word count and I wanted this entry to be focused more on the troubles than anything else. Leave a comment if you have specific questions about this experience or the eventual solution.
by alarial | Jan 11, 2016 | GameDev, projects, Unreal Engine 4
The new year often brings a feeling of rebirth to people, projects, relationships, or any number of things. For myself and the Squirrel Alienz studio we are renewing our commitment to creating fun games and developing engaging experiences. We have a high-level path forward for the year and have already begun the first steps of increasing engagement, focusing on artistic resources, and redesigning the website. I have some really exciting plans for the future and can’t wait to share more of them with everyone!
Our primary and immediate focus is Alsherok: Arena which will combine much of the RPG elements of races, classes, and skills with an action arena experience that will have you fighting for your life. Go check out the page for more information (Alsherok: Arena)! The game features multiple classes, races, skills, arena paths, and challenges. Over the next few weeks I will be updating this page with more specific details about the game as well as some planned features.
As I also mentioned, there are larger plans in the works. I will share some of those as I build out the timeline so that everyone can see where we are and where we are headed as a company. 2015 was a year full of learning and discovery, but I plan to make 2016 the year of accomplishment and action. I will always be transparent about our process and our work because I believe community involvement requires trust on both sides and you can’t buy into something you don’t understand. Please join me in making 2016 the best year yet!
–Regards
Cameron Carroll
by alarial | Jan 2, 2016 | GameDev, Unreal Engine 4
I have been able to replicate most of the functionality, properties, and UI pieces I had originally written through Blueprint. The only thing I am lacking now is the AI portion I had set up near the end of my time using Blueprint and haven’t even begun to tackle through C++. I will work on that soon. I want to start focusing on AI and enemy behavior, so I need to cross basic functionality off the list. I am still lacking attributes (strength, dexterity, etc.), an interface that allows allocation of any points, and a way to view current information. After that I will need enemy functionality including vitals, hovering text, and basic movement. I also want to look at floating combat text and onscreen indicators of nearest enemy. Things are coming together much more quickly now that I have the basic C++ conversion out of the way.
by alarial | Dec 25, 2015 | GameDev, Unreal Engine 4
Finally got the project compiling on my Macbook! That meets my immediate cross-platform needs so I’ll not worry about the Linux side for now. Turns out it was my fault in the first place. I had already built the library on my Windows machine on first load, so the editor didn’t care when I introduced errors on the code side to resolve. When compiling from scratch, the editor cares very much. I fixed the issues and pulled the code down to my Macbook and compilation worked perfectly 🙂
Back to the more fun work of actually working on functionality!
by alarial | Dec 21, 2015 | GameDev, Looking for...
I am currently looking for someone on the graphics side of the house to talk about logos and art style for the game. I have a few ideas, but need to see some proof of concepts before I can really decide. Anyone interested can contact me via the chat or contact pages on the website.
by alarial | Dec 21, 2015 | GameDev, keeping you hopeful, projects, Unreal Engine 4
I’ve succerssfully completed my transition over to C++ for the primary implementation of my work, updated repositories, and brought everything in-house to my own NAS because of game size issues. I am still working on testing cross-OS compilation for the game when working on either my Windows machine or my Macbook and getting everything reimplemented.
I have found that I want to approach certain pieces different now that I have had a chance to reevaluate during the transition. So I will inevitably scrap some of what I had done before. But that’s what refactoring is all about, right? 🙂
by alarial | Oct 17, 2015 | GameDev, keeping you hopeful
I completely underestimated the time a second child would require in relation to only one child, so I haven’t had much of a chance to really sit down and focus on the game. I have had a bit of time to review some interesting engine updates and be sad that my code needs to come a long way to catch up with the changes. The game development is still on, just delayed. One of the things I am slowly working on is recreating my existing work through primarily C++ rather than entirely Blueprint. I really like Blueprint, but some benchmarks show it can run up to 10x slower than C++ code which does not bode well for computation-heavy situations. On the plus side, I have one less time commitment than before as I have finished my Bachelor’s degree program. It seems as if things have slowed down a bit for both me and my other dev, so hopefully we can get back to churning out some code. More to come!
by alarial | May 8, 2015 | GameDev, MUD-life, projects
One of the developers that was to be at the core of the Alsherok project is unable to devote the time necessary to focus on the project. What this means is that I am placing the project on hold based on project size, complexity, and available resources. The work I have completed getting the flat files parsed out and into a database is not completely wasted as I learned a good deal about both the process of parsing non-standard flat files and the flexibility of Postgres. This project will stay on my list, and I still plan on tackling it. Unfortunately that will happen slightly further down the road.
by alarial | May 5, 2015 | GameDev, MUD-life
I finished the bulk of the flat-file parsing, at least the ones that matter at this stage. I made the process repeatable and as generic as I could in a short time. I am not entirely happy with the code as it stands, but it works for what I needed, and I think I can release it as open source here shortly after I clean up some testing portions.
I have some internal things to sort out. I will have an update out by the end of the week.
Recent Comments