tag:blogger.com,1999:blog-69696032428821153212024-02-19T08:23:21.544-08:00Code ContinuumHalkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.comBlogger100125tag:blogger.com,1999:blog-6969603242882115321.post-86839856214869522622018-05-08T19:39:00.002-07:002018-05-08T19:39:53.615-07:00Tutorials<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWQsZ9dGDW-kc4QvQS4ESACS2Vt_GnSdIZa4dBCj0zo3n9aMqxj93cFoE1cafDngO8ma8AoWsG5KfUe99EIwVb9obwPZkyHx2uedKxWgV62nkVvLa6gryqau3b3PPOJV6O55er47sQzuI/s1600/tutor2.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="800" data-original-width="1280" height="125" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWQsZ9dGDW-kc4QvQS4ESACS2Vt_GnSdIZa4dBCj0zo3n9aMqxj93cFoE1cafDngO8ma8AoWsG5KfUe99EIwVb9obwPZkyHx2uedKxWgV62nkVvLa6gryqau3b3PPOJV6O55er47sQzuI/s200/tutor2.png" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Tutorial Screen</td></tr>
</tbody></table>
So my update schedule is going to be a little hit and miss as personal things are popping up in the way. Nothing bad, and I'm still working away. The good news is I have an idea of the seven tutorials that are going in. I'm going to be writing a supplemental tutorial editor for myself, just to make editing the timelines a little easier. Also, I have been looking at some new themes for the game proper. Nothing concrete yet, but I'm starting to narrow down what I want the true "Default" theme to look like. It's a little more blue and white with grey and a slight cartoony touch, but the "Classic" mode will still be there too.<br />
<br />
As for right now, there is a lot to back-end and co-opt the old help system, but this is the last functional feature I'm adding that I know of, unless I forgot anything.<br />
<br />
<br />Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com1tag:blogger.com,1999:blog-6969603242882115321.post-13053983524315011102018-05-01T17:48:00.000-07:002018-05-01T17:50:46.144-07:00Manual is Complete For Now.<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqbdjK0Vwro1SiGSg1M5wjOW9SXkN1vt2SSO0uB9OrBXcvFgvN3BaAyxEXJdRIz9lvlj0qs8J9Xl6pv_kYyVGAAmQH644ssZt6X6rfyatGdDReIegeEqk_fpTXYgBuaTQIcuW_H92yXbI/s1600/manfin.PNG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="880" data-original-width="1600" height="176" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqbdjK0Vwro1SiGSg1M5wjOW9SXkN1vt2SSO0uB9OrBXcvFgvN3BaAyxEXJdRIz9lvlj0qs8J9Xl6pv_kYyVGAAmQH644ssZt6X6rfyatGdDReIegeEqk_fpTXYgBuaTQIcuW_H92yXbI/s320/manfin.PNG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">New on the left, old on the right.</td></tr>
</tbody></table>
First pass of the manual is complete. All the graphics and callouts are in there. I did a quick review and saw it's not 100%, but it's in a self-contained format that can be edited and exported to PDF. I'm thinking about actually releasing the manual as a kind of promotion for the game, but I'm not sure I'm going to call that yet.<br />
<br />
There are some subtle differences between the versions. In a perfect world I would of set up headings and other auto-format items, but as the original documentation was already formatted, I didn't bother. However, the headers are what's used for the auto table of contents and linking system. This is why the title in the page header is also missing. Even though the current version is a page-for-page copy of the original (for the most part), I have a lot of aggressive page breaks that's going to wreck havoc when I update the documentation. I'll worry about that when I'm in the finalization phase.<br />
<br />
Next is the tutorials. I was monkeying with the demo save/record functions a little bit today. I'm not keen on the timers yet so I need to figure those out. There are 4 timers in the game, and they all have a resolution of 100ths of a second. Originally they were dependent on clock(), which required <time.h> but I wrapped allegro's timer function around them. <br />
<br />
The 4 timers are as follows.<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">long mtime //The master timer that starts from 0 and runs as the game plays</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">long ktime // The keyboard timer for keeping track of when keys were pressed for demo recording playback</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">long rtime //??</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">long ntime //??</span><br />
<br />
The last two are used for time swapping but never really investigated as they just seemed to work after I replaced the clock() function. This will be getting scrutinized as I convert the demo system into a tutorial one. That's tomarrow's mission.Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-62917698234607312832018-04-30T17:06:00.000-07:002018-04-30T19:52:49.164-07:00Still On the Manual Thing<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjerCZdPlIWzyMFsB4xx9EYaQ3L0ZKDaD_jSuTMAXZdy3SVXFqlbvAvsV0i-CZBxeI8tZ6BD3C_MUJxFC814H85AXCN8nM6Zqr28wTu_z8YteLeIzhkz1YSICcOtUlc1vImK7uVGlN1dTA/s1600/moreman.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="875" data-original-width="1600" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjerCZdPlIWzyMFsB4xx9EYaQ3L0ZKDaD_jSuTMAXZdy3SVXFqlbvAvsV0i-CZBxeI8tZ6BD3C_MUJxFC814H85AXCN8nM6Zqr28wTu_z8YteLeIzhkz1YSICcOtUlc1vImK7uVGlN1dTA/s320/moreman.PNG" width="320" /></a></div>
The manual is slow and steady, but while reformatting and reviewing it, I have lots of ideas for tutorials and guided tours now. I'm also jotting down ideas on how to implement the lessons in a back-of-the-napkin kind of way. As I said before, the keyfiles are simple list of what key was pressed and when. It does not save mouse clicks, and on top of which, the mouse is disabled when recording a keyfile anyway. However, one of the interesting things about ROE is that it has object list of all the buttons in the game. The button object info also includes the locations and sizes of them so I'll probably be capitalizing on that to highlight buttons that were pressed with a callout to the tutorial text.<br />
<br />
Speaking of callouts, reproducing them in the manual is kind of tedious. If it isn't obvious, I'm using LibreOffice. Sadly, the callouts native to that program have boxes around the text elements. This means I'm having to do the text elements and the line separately. Looking at the original scanned manual, it appears that the graphics were physically pasted into the paper and the lines were drawn with pen. This is a massive improvement.<br />
<br />
Anyways, back to putting my editor's hat on.Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-416980339975090432018-04-28T13:22:00.001-07:002018-04-28T13:24:09.642-07:00Manual Labor<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8nJ4myXpSKN6E7RkUp0qbfMI6muZIuAJF00BWdiy_dyBqx0FNVLCMMofhy2Zbktgqzad0pi4DfReDS19HCkwNKvnZSvS4A2dVDNEmRmXqNzq-FnfErKnSCP-VT-trH2WaU4hIuzHLNCc/s1600/newman.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="875" data-original-width="1600" height="174" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8nJ4myXpSKN6E7RkUp0qbfMI6muZIuAJF00BWdiy_dyBqx0FNVLCMMofhy2Zbktgqzad0pi4DfReDS19HCkwNKvnZSvS4A2dVDNEmRmXqNzq-FnfErKnSCP-VT-trH2WaU4hIuzHLNCc/s320/newman.PNG" width="320" /></a></div>
I've decided to make it a weekend project to finish the manual. At least get it current and into some kind of baseline. I've had to update some graphics a little but most of it is simply pushing things into the right areas and putting pagebreaks just so. <br />
<br />
It's yet another unglamorous thing. But it's been fun updating some of the icons to Unicode. Sadly the symbols used for PageUp/PageDown and Home/End were not the ones that the Unicode standard chose. (But are the ones in the game) so I had to make due with a graphic.<br />
<br />
Speaking of graphic I updated some of the lineart to SVG. Looks pretty snazzy.<br />
<br />
All of this work is giving me ideas for tutorials. I think I have about five or six of them in my head now. I finalize them when I'm done with the manual. I'm on page 87 of 220 after a days worth of work.Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-21784015961894673212018-04-26T16:16:00.001-07:002018-04-26T16:17:01.556-07:00Keyfiles and Tutorials I was able to knock out the keyfile/demo system today. It was pretty simple. I can now record and play back keyboard inputs as the basis of the upcoming tutorial system. However, it then became a question of... What should I tutor?<br />
<br />
ROE has kind of an esoteric interface. It's one of the things I find charming about the game. However you shouldn't have to read a 220 page manual to learn how to play content anymore. Current gamers, for all of their nostalgia, reminisce about when games came with booklets. I can relate. However, here's a little tidbit. Right now I'm learning how to play breach so I can get the IGS linking done properly. That game is not very intuitive at all! It's 126 page manual, (Which also doubles as it's copy protection), is a bit heavy interspaced with stories and lore. However, you have to get to the end to find the quick-start tutorial and the key bindings. Another thing is RTSs have grown a little and there are conventions nowadays that didn't exist in 1991.<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3yTppxlNUGkqNxCVL6JJezGXFtxft9QidI2d344DKbVGvGvzmyDuL65ENyR2zY7_CpQyrdHgToiVn4domeC-tWMLN3tpXFQouXvA6E46s5nidIgvjaaYYkiW_WK687mlLLwW2cJ8juJk/s1600/manual.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3yTppxlNUGkqNxCVL6JJezGXFtxft9QidI2d344DKbVGvGvzmyDuL65ENyR2zY7_CpQyrdHgToiVn4domeC-tWMLN3tpXFQouXvA6E46s5nidIgvjaaYYkiW_WK687mlLLwW2cJ8juJk/s1600/manual.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="876" data-original-width="1600" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3yTppxlNUGkqNxCVL6JJezGXFtxft9QidI2d344DKbVGvGvzmyDuL65ENyR2zY7_CpQyrdHgToiVn4domeC-tWMLN3tpXFQouXvA6E46s5nidIgvjaaYYkiW_WK687mlLLwW2cJ8juJk/s320/manual.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Giving the manual a facelift.</td></tr>
</tbody></table>
It get an idea what is important, I decided to end-to-end the ROE manual. While cracking it open, I figured while I had it, I might as well work on updating that as well. When I get the ROE sourcecode, it came with the manual in both DOC and Adobe Pagemaker 4 formats. Sadly, there is nothing that is going to crack open the Pagemaker files. The last program that could open those was version 7 and Adobe redirects you to InDesign, which can't open them at all. Such is progress I guess.<br />
<br />
So I'm updating the DOC files, that seem a bit out of date. I'm filling in the gaps from a scanned PDF of the original manual. It's looking good, and while I go through it, I'll be getting together a tutorial syllabus and implementing what I think is important. Most likely there will be a run though of the Shakedown Cruise. This may require me to do a little datafile shenanigans as it will require me to make a commander and start a game that won't mess up the player's settings.<br />
<br />
I'm also mapping what the actual command line arguments are for the game. I know most of them, but it's best get get them all written down somewhere.<br />
<br />
<br />Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-19398886225734760322018-04-25T16:10:00.001-07:002018-04-25T16:10:12.833-07:00Zoom Works - All Options Complete<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlViJKe7lemtrN2vfSTIeC1OLx9_ikaCyAyU-2tXPPZpH0Xgf6m0tl2CnvL_Ht1rNtgEmmGbNAtI2oOmAzWT6GKVkpppeUjuWnThgdHywDx9xGH9MeI8AbvufW4ak5bMVS4I3971hzm24/s1600/zoom.PNG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlViJKe7lemtrN2vfSTIeC1OLx9_ikaCyAyU-2tXPPZpH0Xgf6m0tl2CnvL_Ht1rNtgEmmGbNAtI2oOmAzWT6GKVkpppeUjuWnThgdHywDx9xGH9MeI8AbvufW4ak5bMVS4I3971hzm24/s320/zoom.PNG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Zoomed 16:10 on 16:9 display. Side borders are visible.</td></tr>
</tbody></table>
After straightening out my math I was able to get the Zoom option to work. I also added some bilinear filtering to make zoom and stretch options look a little better. It makes things a touch blurry, but That will look better when the HD graphics are implemented.<br />
<br />
My next task is the Demo/Tutorial system. The demo system in this game uses what's called a "keyfile", which is a timed list of recorded keys pushed during gameplay. I have a sample demo file, but it doesn't have much. While I was checking the filesystem functions for the keyfiles, I saw that my data path variables could stand to be a global so that any function could use them. I streamlined that a bit.<br />
<br />
During the initial porting process, I had an issue with the keyfiles before so I left them alone. The problem was I couldn't process the accelerator keys. I actually don't think I'll need these as all the commands I have run across so far don't use them. Especially as I'm going to use the keyfiles for tutorials. The idea is that with every keypress, a bubble will pop up explaining why that button was pressed. That tandem script will be found in a .tut file with the same name. The game only uses one demo file called "rules.dem" but I will take advantage that the keyfile loader allows for different filenames. The idea is the tutorials will be found in the F1 Help function. Right now it just gives a general blurb about the screen you are on. After adding the Option button, I should have no problem modifying the help system. I'll have to come up with a syllabus. Most likely I'll have it auto-play though the shakedown cruise mission as the "final" tutorial.<br />
<br />
I've been working a little extra to make up for my lost GDC time. My Trello TODO list is getting shorter too :)Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-66906592227300616282018-04-24T14:30:00.002-07:002018-04-24T14:30:50.774-07:00Stretch and Squish <table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiDQZjDnG0zjbq-IyQ9a2-_lXZZ6-Q49A5EiirqNFixss4xqG3zoR0Yxd6wSu7wCj2r_8YJenSGIDLpN6eft05iYYqOVC8cy5lLw6YYD0qTq7OZJp8IThI8onx7c-K7JZA9vGV6QZapgs/s1600/stretch.PNG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiDQZjDnG0zjbq-IyQ9a2-_lXZZ6-Q49A5EiirqNFixss4xqG3zoR0Yxd6wSu7wCj2r_8YJenSGIDLpN6eft05iYYqOVC8cy5lLw6YYD0qTq7OZJp8IThI8onx7c-K7JZA9vGV6QZapgs/s320/stretch.PNG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Ship builder in 1080p. It's cooler then it looks</td><td class="tr-caption" style="text-align: center;"></td><td class="tr-caption" style="text-align: center;"><br /></td></tr>
</tbody></table>
The ability to stretch the game full screen corner to corner works, along with the mouse. Going along with this was a little optimization to the rendering flow. I'm now prototyping the "Zoom-Maintain Aspect Ratio", but I started it late in the day and my brain is having difficulties mathing the proportions right. The aspect ratio is backwards so it's taking my 1280x800 picture and squishing it into a neat 1280x720. (i.e., it's applying the 16:9 aspect ratio of my screen onto the picture, and not the other way around.)<br />
<br />
<br />
After the display squishing is done, the next project is the keyfiles, which should be turned into a Tutorial system. The keyfiles were originally the prerecorded input used for "demos", which was popular in the 90s. I may extend this a bit with a commentary file that is read in tandem.<br />
<br />
It may not look like much, but it's going better then I imagined. Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-33187888051094420452018-04-23T18:42:00.004-07:002018-04-24T11:35:03.137-07:00Seamless<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNuK6epueIiLGzDvMPnzxKUHggW1ELNXwQpGJPuUfb3CCIJwf8y5KIgUJ-0qo_h3e4EaVuNrRLmXa755mbqxi2olqKsVFN3g4qU6Tz2-O1867xlCdr3w9bO3UIMOdZUSL_IBQvLD0B5js/s1600/overlap.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNuK6epueIiLGzDvMPnzxKUHggW1ELNXwQpGJPuUfb3CCIJwf8y5KIgUJ-0qo_h3e4EaVuNrRLmXa755mbqxi2olqKsVFN3g4qU6Tz2-O1867xlCdr3w9bO3UIMOdZUSL_IBQvLD0B5js/s1600/overlap.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="702" data-original-width="874" height="160" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNuK6epueIiLGzDvMPnzxKUHggW1ELNXwQpGJPuUfb3CCIJwf8y5KIgUJ-0qo_h3e4EaVuNrRLmXa755mbqxi2olqKsVFN3g4qU6Tz2-O1867xlCdr3w9bO3UIMOdZUSL_IBQvLD0B5js/s200/overlap.png" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Overlap at the corners</td></tr>
</tbody></table>
So I was able to correct the seam problems. Most of it was overthinking the problem. What I was doing was tweaking the corners to try and hide the very edge of the texture. What I wound up doing was remodeling the cube to have the edges overlap by a tiny amount. That was able to fix the seam issue once and for all. On the right is the model I used. It was just a matter of making a cube and then "pushing" in each face a little bit.<br />
<br />
I fixed the FadeIn() fader. It wasn't anything than needed a rewrite, just some order of operations were backwards. I also just got the starfield implemented. I've having the border update when the game updates the screen. Keep in mind that ROE updates the screen asynchronously. This means the border rotates faster on some screens then on others. This is actually a good thing, as it allows me to look for bottlenecks. ROE is not a computationally complex game, but some screens are giving me less then 10 FPS and my CPU is spinning up to 100%. Some screens "pause" input which causes everything to freeze until you press "OK". During my optimization pass I will need to get the background spinning as fast as possible and then I'll put in a timer to get the updates consistent. However, for now, the background is implemented. Now on to the squishy/stretchy bits. <br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhowCe07bVWNKv-HOp6O4_GfWimxnfIE2Cbc1Ai5D4KUUfEhKUVP-nt8WJmsMknh1SQerSXSMVOatPvJtOLnqsylX9rxu08y4FW14PsHpII9AYBIu6lUyHI0tSv9RVdgXeT2NtoU1e-5G0/s1600/gameborder.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhowCe07bVWNKv-HOp6O4_GfWimxnfIE2Cbc1Ai5D4KUUfEhKUVP-nt8WJmsMknh1SQerSXSMVOatPvJtOLnqsylX9rxu08y4FW14PsHpII9AYBIu6lUyHI0tSv9RVdgXeT2NtoU1e-5G0/s400/gameborder.PNG" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The rotating starfield is ubiquitous while in full screen mode.</td></tr>
</tbody></table>
<br />Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-54581892934144876482018-04-22T04:06:00.001-07:002018-04-22T04:24:05.885-07:00Crossing the Border<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjytmBw32P_VEnsyZztRpvOzcg6SiPBydhzrneC5LaOJgzYuCUPfgWzQ98mWZWqR2KtVGh-izuM0JqM1ka90efhJq7bgki_2GiG0l_VHbAYvUvPmOG_b0QETNwTWHDxYDkh2qoIw-gTqdo/s1600/native.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="900" data-original-width="1600" height="112" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjytmBw32P_VEnsyZztRpvOzcg6SiPBydhzrneC5LaOJgzYuCUPfgWzQ98mWZWqR2KtVGh-izuM0JqM1ka90efhJq7bgki_2GiG0l_VHbAYvUvPmOG_b0QETNwTWHDxYDkh2qoIw-gTqdo/s200/native.png" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Full screen experiment using a test border</td></tr>
</tbody></table>
So this implementation of the border code is going much more smoothy then I thought it would. I haven't started on the squishy/stretchy bits yet, but I have been able to shim in where to render the background. Even better, this allows the theme to have semi-transparent screens so that the background will show from underneath. I have the (admittingly unoptimized) skybox code functional. I have a "lab" that I develop experiments in. It's a completely different solution then the ROE project. I've used it in the past to work out color tinting, audio mixing issues, and other odds and ends to check if what I'm attempting if feasible. If it looks good, it goes into the main code with a little cleanup. In fact, the options menu was one of the first times I wrote a whole chunk of functionality in situ. Much of that required functions in the game itself<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqjO2w-l7zy20cGfjL3RGomXscG75rPDEUCBahuVwHI7bNRpe1JPOnljZ_T-Y6yAVImDPf8fyBSZxP1EV_FuMSfk9aoOfPqMIfmcCQrmOmjFfu0RWtQ6Ul6z5SiOdSiWJ5z9XQIvB-tGM/s1600/seam.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqjO2w-l7zy20cGfjL3RGomXscG75rPDEUCBahuVwHI7bNRpe1JPOnljZ_T-Y6yAVImDPf8fyBSZxP1EV_FuMSfk9aoOfPqMIfmcCQrmOmjFfu0RWtQ6Ul6z5SiOdSiWJ5z9XQIvB-tGM/s1600/seam.PNG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="746" data-original-width="1274" height="116" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqjO2w-l7zy20cGfjL3RGomXscG75rPDEUCBahuVwHI7bNRpe1JPOnljZ_T-Y6yAVImDPf8fyBSZxP1EV_FuMSfk9aoOfPqMIfmcCQrmOmjFfu0RWtQ6Ul6z5SiOdSiWJ5z9XQIvB-tGM/s200/seam.PNG" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Seam errors</td></tr>
</tbody></table>
As far is the skybox code goes, everything rolls in an lazy clockwise corkscrew. I have the camera slowly yawing and pitching to give it a slow precession. I am having a problem with my texture seams that I still have to work out. In Allegro, the textures repeat and so if you have a dark edge on one side and a bright edge on the other, the interpolation will sometimes "bleed" though. What you normally do is clamp the textures so you don't get rendering errors, but I don't seem to have that functionality in Allegro out of the box. There is a OpenGL extension I can use, but I think I can work with that I've got. If anything I can give the edges a little "push" outside the cube to hide that. <br />
<br />
Sadly when fading in with the new border, it looks like garbage. I'm going to need to recode the "fade in from black" function again, making it my 4th rewrite. The original game used a simple CULT fade, but I don't have that in Allegro 5 and instead rely on layers going from opaque to transparent on a timer. I think I may need to "Fix Once and for All" that code once and for all. Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-52616131433418206362018-04-21T07:55:00.000-07:002018-04-21T08:46:15.312-07:00Skybox<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibsq37300HFNulGABF3QxsZA4HzY80gCyJxirLfNsC7JqUCSN2CSs7LCVQPyfcQ8mG0BedYmSbun87J1rMUpyLr_diTZR5RPqrDcxnJwqJa7TydqCuh3NunOs4XWsrwuQju5zvsj69J2w/s1600/skybox.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="834" data-original-width="1282" height="130" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibsq37300HFNulGABF3QxsZA4HzY80gCyJxirLfNsC7JqUCSN2CSs7LCVQPyfcQ8mG0BedYmSbun87J1rMUpyLr_diTZR5RPqrDcxnJwqJa7TydqCuh3NunOs4XWsrwuQju5zvsj69J2w/s200/skybox.png" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Testing the skybox UV mapping</td></tr>
</tbody></table>
So I decided to do things the "hard" way and make the starfield border a skybox. It just seemed like a better way to render it. If I would of gone with the 2D tile route, I wold have had to deal with a rotating a tile matrix and repeating textures. With a sky box I can make the stars pan, roll, and pitch in any direction with no repeats. So far everything works well. I have to remove a lot of the extra cruft and you can also see the skybox seams. I've played with skyboxes in the past with Blender so that's pretty easy off-by-one error you fix. As far as the textures go, I'm going to need to do some perspective correction, resolution boosting, and a apply a little little bicubic filtering as well. I know doing the silly 3D thing is kind of overkill, especially when most of it is going to be covered up by the game. However, what I'm envisioning in my minds eye is holding up and it should look much cooler then a boring black border.<br />
<br />
I actually had to make the cube by hand, and manually set the UV points. I'm kind of glad I only had 36 vertexes to deal with. I'm also dealing with some pretty primitive 3D so I don't have to worry about surface normals pointing in the wrong direction. (They all are, which is why the numbers are backwards). This also means my skybox is also inside out , but as it's stars, it't not really a problem.<br />
<br />
It Feels good to be back in the programming seat again. I'm going to need to fix this 3rd shift sleeping schedule soon.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE9NOfLb78faiwpmWcHFVf_npbSUZzC06ZsuCdeUimTCA2SAG9QGAtNVD7HsupGelfHe2_FkTqOJy8K8Jgy6AmNAQQJOczDwibjJcKqgJ-6OhTcit2khTHdMU-S-521nROVavFr_SkyY0/s1600/skybox2.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="834" data-original-width="1282" height="260" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE9NOfLb78faiwpmWcHFVf_npbSUZzC06ZsuCdeUimTCA2SAG9QGAtNVD7HsupGelfHe2_FkTqOJy8K8Jgy6AmNAQQJOczDwibjJcKqgJ-6OhTcit2khTHdMU-S-521nROVavFr_SkyY0/s400/skybox2.PNG" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Making sure the textures align. </td></tr>
</tbody></table>
<br />Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-34394957328219490442018-04-20T06:16:00.002-07:002018-04-22T04:07:55.300-07:00StarfieldWhen you deal with aspect ratios, there is always going to be the question of what you do with the border. This is a big issue as ROE was originally designed for a 4:3 monitor. As I espoused in the past, the game was 320x200 which is a 16:10 aspect ratio. Doing a little research, from 2003 to 2008 16:10 displays were super popular for computers. It seems they were just square enough for laptops, and desktop uses like the extra height. In 2008, the market abruptly shifted to 16:9 to match TVs. The idea is, just make one aspect ratio to keep the cost down. Android phones, however, still retain the 16:10 aspect ratio. <br />
<br />
Now that the options menu is done, I need to add the Zoom/stretch modes. In Native and Zoom mode I'm going to have a border. I plan to fill this space with an animated starfield.<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilskVKii92TG-dZH-VjU-qOqVklWtpfRHB_kykZxWpZyURU_-zAF7epFCiBkkCg3hvcfg8zkXFZPN8c9ucsB4qY2Ruo5jZYeoeYWuwB4OUNFIHS_j1oNFndkXo6vmNkm415w4jqKG8zwo/s1600/startile.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="512" data-original-width="512" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilskVKii92TG-dZH-VjU-qOqVklWtpfRHB_kykZxWpZyURU_-zAF7epFCiBkkCg3hvcfg8zkXFZPN8c9ucsB4qY2Ruo5jZYeoeYWuwB4OUNFIHS_j1oNFndkXo6vmNkm415w4jqKG8zwo/s200/startile.png" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">My rendered border tile</td></tr>
</tbody></table>
I found a real cool free program that generates starscapes. It actually generates a skybox. For now I'm just using a texture that I rendered and then edited in Gimp to make it tileable. However, on second thought, I may look into the skybox idea. The upshot is that the borders will slowly be moving. Not fast, but more of a graceful roll with a comet streaking every once in a while. It may even change directions. Right now I'm doing rendering experiments to see if it matches what I'm envisioning in my head. I may devote the weekend to this experiment.<br />
<br />
I was able to remove two cards off the trello list into the done pile. I'm no longer adding things to the "Todo" side so the alpha is good and underway.<br />
<br />
I want to have a beta by June. <br />
<br />Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-53262665039850521732018-04-19T07:28:00.001-07:002018-04-19T07:28:12.278-07:00More DarkworkI'm still on the options menu. It can flip from full screen to windows mode and it can set the audio settings. I'm quite proud of myself as I can set the audio with sliders or clicking the buttons and with or without the mouse. I'm learning how the GUI works in this system and I'll be using what I know to attack things down the line.<br />
<br />
It's taking a little longer then normal, but I'm now back in the saddle. That trip to GDC really knocked me out and it took a lot to get back into the proper headspace again. Tomorrow I'll be doing the text input and hopefully will be going on to the new graphic modes. It's really nice to be able to run the game without editing the config file anymore. The only other "Big" addition I'll be making is the demo system into a tutorial system. It's just a matter of extending the keyfiles a bit. Looking at my Engineering tasks in Trello, that's that and IGS integration, which is coming along as I work the filesystem. Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-30002308075311685122018-04-18T08:04:00.001-07:002018-04-18T08:04:21.971-07:00More Options WorkStill working my 3rd shift schedule. No glamorous screenshots. I'm still working on getting options to work right. Most of my work so far on ROE has been to get old functions to function and try and get the game to run as out of the box as possible. In this alpha phase I'm actually adding in functions that were not there before. For extra hard-mode credits, I'm actually using the original Nermal API. Keep in mind, there is nothing stopping me from adding functions in Nermal (I have actually extended it somewhat). What is different now is I'm adding functions into the game proper.<br />
<br />
There's a lot of gluing and pixel counting.<br />
<br />
I have (yet) another hacky solution to my themes. When the game runs "stand alone" the theme folders will be in the same directory as the executable. However, as I'm writing the game, they are currently not. Visual Studio is doing some path magic where my default folder is my working directory and the executable has been sequestered off into a "Debug" folder. Now that I explicitly name theme folders I need a copy of them with the executable, which botches up my working directory and saving my resources to Git. In Linux this would be no problem to solve as I could just make a symlink to the theme folder and call it a day. In Windows however....<br />
<br />
In Windows you do exactly the same thing.<br />
<br />
Did you know that Windows systems after Visa support symlinks? Yea, me neither! Actually NTFS 3.1 could do it in Windows XP, but XP's shell has issues with it. Now I have a duplicate theme folder that will change when I update from my working directory. Pretty cool.<br />
<br />
<br />Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-56526383006359223532018-04-17T05:35:00.004-07:002018-04-17T05:55:22.514-07:00A Slight Rework<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxPCbgPKUD3ZDFB0JkJf0KBfdk9ij9yUEw45iPJv0oYyn6mA5mniKy9Iz1oOmcWWWlhy6q0uEav7KopPs3EVJACh8Zq5Ah5iEBmfJTjYHEhzHiBQVYicYVR9dijFKdchvTuPWpzZ0VX0Y/s1600/rightopt.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="832" data-original-width="1282" height="207" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxPCbgPKUD3ZDFB0JkJf0KBfdk9ij9yUEw45iPJv0oYyn6mA5mniKy9Iz1oOmcWWWlhy6q0uEav7KopPs3EVJACh8Zq5Ah5iEBmfJTjYHEhzHiBQVYicYVR9dijFKdchvTuPWpzZ0VX0Y/s320/rightopt.PNG" width="320" /></a>My sleeping schedule is all shot again. I got up on Monday night and just decided to just work 3rd shift. I decided to rework the options menu. It looks so much better and appears like it belongs now. The reason why I'm using the "Classic Theme" is to keep things consistent. When I start implementing the new theme(s) I want to use "Classic" as my template. <br />
<br />
Short of some hacks, I am able to read the config data for the most part. I discovered that my theme engine is quite hacky and needs to be corrected. Also, converting a char from 0-255 to a string from 0-100 requires and ugly cast to float. I something I can fix, my brain power is empty now. Also the sliders don't move when you click on them with a mouse. I'll steal that code from the captain builder.<br />
<br />
This options menu covers everything from the installer with a few things cut. There is no audio on/off as setting the volume to 0 does the same thing. Also, the game auto detects a pointer device and will give a pointer if appropriate. As you saw from my touch demo, it hides the pointer automatically in that mode. <br />
<br />
There is still some cleaning up the theme code and then starting on the Squish/Stretch rendering of the display. I *will* lose my blitter and my mouse when I do this, but it's better to break these and fix them then to have something break and not even know.<br />
Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-66333286949755818352018-04-13T16:07:00.000-07:002018-04-13T16:07:04.702-07:00Keeping Options OpenEvery once in a while I'll have an inconvenience get under my skin and I'll will want to fix something "Once and for all". I did this for the Nermal library and then for the BlitBit() function. (Something I rewrote three times). Now that I'm in the mode of getting ROE feature complete, it was time to attack the "Options" button.<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzX4vdRveNevg7qT4EamQ9t_-LAYEC3hePDvGPFVDd-c1mbePcB-Ki8JHCs0otHU5sZNRB_XNH61ttfoy_5-GlVNOLdVKtF36sl9xydfv4xtDIE56fPHWiziJctMdBf-tArt-HGzbXT1I/s1600/optscreen.PNG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="832" data-original-width="1282" height="207" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzX4vdRveNevg7qT4EamQ9t_-LAYEC3hePDvGPFVDd-c1mbePcB-Ki8JHCs0otHU5sZNRB_XNH61ttfoy_5-GlVNOLdVKtF36sl9xydfv4xtDIE56fPHWiziJctMdBf-tArt-HGzbXT1I/s320/optscreen.PNG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Layout is still in work.</td></tr>
</tbody></table>
Originally options were set when you installed the game. I added an options button, but all it did was change from windowed to fullscreen and required a restart I'm now adding options and putting in controls. It doesn't work quite yet, but when I get this functional, I'll be off to break/fix the scaling code. When I was at GDC, there was a developer there that made a "retro" game in 4:3 and came up with a slick way to animate the dead space on the sides when it was displayed on a 16:9 display. I told the chap that I as going to straight up steal his idea. He was happy to let me ape the design. I know that once I start messing with aspect ratios it's going to be all over the place. I might as have the option available to put things back when it inevitably screws up so I'm not hex editing the config file all the time. The listing in the screenshot should be all the options I need for this game.<br />
<br />
I need to make a few buttons in the menu and get the input right, but this is going to be my pet project for a while. <br />
<br />Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-54173546560837630732018-04-12T16:10:00.001-07:002018-04-12T16:11:57.161-07:00Easter Egg Hunting<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4jhCvOVid-NfQKpMNsLxJdGXq_xI_VEymXI9YyV6O92SRxukcmS0xEb2KSdL9KrpNkTfp8-AtQvjuRZqnN8OTjv-4R3PGmWpNPbSJjvB3GNs7AqtetwrEgjLACR_XpUCiN9kj0jWmiPI/s1600/intagr.PNG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="736" data-original-width="1500" height="98" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4jhCvOVid-NfQKpMNsLxJdGXq_xI_VEymXI9YyV6O92SRxukcmS0xEb2KSdL9KrpNkTfp8-AtQvjuRZqnN8OTjv-4R3PGmWpNPbSJjvB3GNs7AqtetwrEgjLACR_XpUCiN9kj0jWmiPI/s200/intagr.PNG" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Breach2 import works</td></tr>
</tbody></table>
So I have the ability to load Breach2 commanders now, which is nice. I only have a handful of filesystem functions left that depend on the stdio.h library. While playing the game, I noticed that if a mission had an enemy named "FWRP" that my communications picture changed from the alen form to a human FWRP officer. I went hunting down where that was and that's where I discovered the "Easter Egg" aliens. I knew they were there as I had a graphic for them, but I never saw it loaded and I assumed that it was some legacy fluff.<br />
<br />
Nope!<br />
<br />
Turns out that there is a list if 14 alien names that will change the image of what your race will look like. They are listed below.<br />
<br />
"'EJYO' DIVI'" = Captain Picard<br />
"TERRAN" = Blue Superhero(?)<br />
"TLHINGAN" = Klingon<br />
"FWRP" = Federated World Reserve Personal (In universe)<br />
"FWSF MARINE" = Federated World Star Fleet Marine (In universe)<br />
"ROMULUSNGAN" = Romulan<br />
"OVERLORD" = Devil<br />
"ALLIANCE SSE" (In universe) <br />
"MARVIN MARTIAN" = Loony Tunes chatacter<br />
"UNITED PLANETS" = (In universe)<br />
"ROBBY ROBOTS" = Robot from "Forbidden Planet"<br />
"GORT" = Robot from "The day the Earth Stood Still"<br />
"METALUNAN MUTANT" Alien from "This Island Earth"<br />
"CONRAD NEAL" - Dog with a bow tie<br />
<br />
I tried making a Marvin Martian race and, yup... Easter Egg still worked. Sadly, those are going to have to be unceremoniously ditched except for the in-universe races. Cute Egg though. <br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgceXAFQN15ktUhuVB28XbK2P_lTWlPVlzzFRo_uzWOk6jUqotKzi9-YtFmwdfFybUZ2uOn5TbXdjQFdfcbmpQ9P9cd11MCOju17Kp-xkYxpsrJ29SEi5vmlcWOfTs-75yHn5MNSW2-nD8/s1600/easter.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="830" data-original-width="1278" height="206" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgceXAFQN15ktUhuVB28XbK2P_lTWlPVlzzFRo_uzWOk6jUqotKzi9-YtFmwdfFybUZ2uOn5TbXdjQFdfcbmpQ9P9cd11MCOju17Kp-xkYxpsrJ29SEi5vmlcWOfTs-75yHn5MNSW2-nD8/s320/easter.PNG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Sorry Marvin :(</td></tr>
</tbody></table>
<br />Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-86566360218865150862018-04-11T16:50:00.002-07:002018-04-11T16:50:26.657-07:00Breach 2 Integration <table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaw7K3bXzymYDaclMRm3kSFrv8nwJyi_lVwk0Mu9fe6dFWXYr0XYu2HJSynEtRAmI6gwUg_e79zOPiicoL60tcy5Jh-kwddoRJjQb-c-Xh9-L5blB7lckfdaRirvgiLf13_ISBAmtcUC4/s1600/B2.PNG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="832" data-original-width="1282" height="207" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaw7K3bXzymYDaclMRm3kSFrv8nwJyi_lVwk0Mu9fe6dFWXYr0XYu2HJSynEtRAmI6gwUg_e79zOPiicoL60tcy5Jh-kwddoRJjQb-c-Xh9-L5blB7lckfdaRirvgiLf13_ISBAmtcUC4/s320/B2.PNG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Breach 2 Detection code is in now. See the new Options button?</td></tr>
</tbody></table>
So I'm still trying to kick out the rest of the filesystem stuff and I'm working on the integration for Breach 2. This means that I need to make plans about how a theoretical Breach 2 game is going to install if I ever port it to Windows. First thing is that the data files are going to be installed in a set location and I have that all planned out. Next is the Breach 2 commander conversion code, which I unceremoniously dumped a few weeks ago and now have to put back. I have some new code where I can detect if B2 is installed and then grab the files without asking for a path first. After this will be some backtracking to figure out why my mission loader is misbehaving. It's not only crashing, but some missions are being misread, but I'm pretty sure it's the IGS data that's embedded in the file. Emails went out to some people I met at GDC. I have a project request too, so I'll see what that is all about.<br />
<br />
I also have to say, thank goodness I documented much of the core functions in Doxygen. It's making adding buttons (Like my new "Options" at the top) and alert dialogs so much easier to do.<br />
<br />
<br />
<br />Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-9805385513171396592018-04-10T15:44:00.001-07:002018-04-10T16:27:57.821-07:00Wise from your Gwave!Hey, It's been a while! Looking good! How are the kids? That cool.. Oh where have I been. Well, I wish I could say it was a long story but it was a double-whammy of being sick and a profound desire to just take a break.<br />
<br />
I'm back for what it's worth.<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIhJKLQMlTx2Crpd5Pv3QcbhFKmMIVb5EdzccOx-suMwhzhSS6Q2ydXrRD9sChzaoIATVy_J0Q13uE3gPgeuq4FXH8unqJlwyOHTWoDD_LF82gfiZB95I_q2L5QDzdkjdwV9d8mFPL2uU/s1600/Pestilence_T1.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="499" data-original-width="333" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIhJKLQMlTx2Crpd5Pv3QcbhFKmMIVb5EdzccOx-suMwhzhSS6Q2ydXrRD9sChzaoIATVy_J0Q13uE3gPgeuq4FXH8unqJlwyOHTWoDD_LF82gfiZB95I_q2L5QDzdkjdwV9d8mFPL2uU/s200/Pestilence_T1.png" width="133" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Artist's rendering of my fate</td></tr>
</tbody></table>
It all kinda started on Friday at GDC. I had awaken from my slumber with what could only be described as my insides desperately wanting to get out. There are only two ways anything was going to exit my body and my entire digestive system was giving it a go at both ends. You know in the movies where Death decides to pay you a visit and it's always this skeletal from in a black robe and scythe? Well, remember that he's just one of the Four Horsemen of the Apocalypse. For some reason, Pestilence decided to stop by. I can imagine he was having a great time wandering about GDC in his green cloak, quiver, and bow. I'm almost positive he delighted in putting on every HTC Vive, Oculus, and PlayStation VR at the event. I mean, he did have a job to do. There were so many people from all over the world crammed into one place. I made an effort not to put my face into any virtual reality mask, but it was all for naught.<br />
<br />
At 3:30am on Friday, a knock comes to my door. I get up and open it, and there, I swear to God, stood Pestilence.<br />
<br />
"Hey dude," He says. "Mind if I chill for a bit at your place for a bit?"<br />
<br />
I thought about refusing, but over looking over his shoulder into the parking lot, death was hanging out on his pale horse. He waved at me with a grin.<br />
<br />
"That's cool", I said, like I had a choice. "I have an extra bed and the Wifi is free. The password is on the desk. If you don't mind. I have to go to the bathroom now and empty the contents of my stomach in the most uncomfortable way biologically possible."<br />
<br />
"Sweet!", Pestilence said, letting himself in and jumping into the extra bed. "Do they have cable here?"<br />
<br />
"BLLUUAAARRGGAGGAHHHHHH" I said into the toilet.<br />
<br />
I was supposed to checkout that day at 11:00am. I was planning on spending the rest of the day a GDC with my luggage tucked away and catch my red-eye home. I wound up having to pay an extra day at the hotel. I ordered room online with means the rate went to $140 for the extra 10 hours. When my alarm woke me again at 8:00 at night, the horseman was still in the other bed on his phone. I got up and packed as best I could and made my way to the office. My green cloaked friend followed. The front desk was very accommodating and, upon hearing that I haven't eaten anything all day, offered me a pizza slice. When I opened the box, Pestilence tapped my on the back with one of his arrows.<br />
<br />
"I wouldn't eat that if I were you." He advised. "It's your call though!"<br />
<br />
I nursed the pizza slice until I got to the airport.<br />
<br />
The next couple of hours were kind of a blur. I honestly don't remember how I got back to Wisconsin. I kind of remember during the flight, Pestilence coming back from the bathroom and sitting next to me. I groggily rolled my head over to his direction. He was playing Candy Crush Saga.<br />
<br />
"Look dude." I said. "I don't mean to be rude, but why are you following me?"<br />
<br />
"Oh!" Pestilence replied, looking up from his phone. "I have this deal with the airline. I'm dead-heading to Chicago. There is this thing going on at the Jardine Water plant next to the mouth of the Chicago River. It's gonna be lit!"<br />
<br />
"I bet"<br />
<br />
When I got back home that Saturday morning, (I don't recall driving home, but my car is definitively in the parking lot), I fell exhausted in my bed, and spent the next week there. I have discovered that the older I get, the time to spring back from being sick gets a little longer. Not excessive, but it's noticeable. Whenever I do get sick I tend to have a persistent cough that hangs out a little longer then normal. But, as a parting gift, Pestilence decided that a bout of bronchitis would be a great way of saying goodbye.<br />
<br />
During this time, coding was the furthest thing from my mind. I decided to just write off the whole adventure as a two week vacation. On Monday I had discovered that getting back into the code was such an awful experience I had no idea what to do. I had bookmarks all over the place. Trello in-works that were not in work, and other tasks that just seemed to be too monumental to attempt. I was drained and due to me work stoppage felt like Sisyphus at the bottom of the mountain.<br />
<br />
I compiled the code I had. It still worked. I'm am now at my seat and ready to<br />
start in what feel like starting over. I'm here now... I'm feeling OK. Thanks for asking :)<br />
<br />
<br />Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-70660676255787572062018-03-22T08:55:00.001-07:002018-03-22T08:55:43.777-07:00GDC Day 3I'm dead again<div>
<br /></div>
<div>
If I don't lose 10 pounds by the time this is done I will be shocked! Meeting lots of people. Went to an awesome marketing seminar and I'm starting to get my web presence known. Coming back to the hotel after a day of GDC-ing I am asleep as soon as I hit the pillow. I'm getting ready to go out again. I think I have the subway system figured out now.</div>
<div>
<br /></div>
<div>
It rains an awful lot here. </div>
Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-31160803968859048602018-03-21T08:40:00.003-07:002018-03-21T08:40:32.306-07:00GDC Day 2<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkNgJg_tdgQoKdlGgHrPVfApwusPQdJctJfEo7RPLoHkXtmsR0aezJAOmJQglz9l0XJGFxmTLLVqlHjKZr4yNynI5UzxhP1ibrkp2_XbzLzEe2sTEn5yiZaUu2u9-J0pr6FhHYR081NEE/s1600/hat.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkNgJg_tdgQoKdlGgHrPVfApwusPQdJctJfEo7RPLoHkXtmsR0aezJAOmJQglz9l0XJGFxmTLLVqlHjKZr4yNynI5UzxhP1ibrkp2_XbzLzEe2sTEn5yiZaUu2u9-J0pr6FhHYR081NEE/s320/hat.jpg" width="320" /></a></div>
I'm writing this the morning after because I literally died last night when I got back to my hotel room. Somehow I was resurrected this morning by my legs feel like noodles. It's a strange environment here. You just walk to up to interesting people and say hello. You chat for a bit, throw out your pitch and have a conversation. I have talked about game narrative, styles, publishing, business, and lots of others just in random. I even pulled an old prototype game from years ago to show to some interested Japanese and swapped cards.<div>
<br /></div>
<div>
There are vary famous people here. Amusingly, during the GDC 101 talk I attended we were warned to kind of stay "at our level", nothing wrong with striking up a conversation with Mr. Video Game Superstar, but there won't be much that guy can do for you.</div>
<div>
<br /></div>
<div>
I have a video demos of what I have for ROE done on my phone read to go at a moment's notice and people have been interested and have given me great feedback. It's also been fun looking at the reactions from C++ programmers about the thing I've had to do to pull 20 year old code kicking and screaming onto new platforms.</div>
<div>
<br /></div>
<div>
Today the expo proper opens so we will see what goes on there... If you are coming here from the link on my business card. Hello! My whole adventure is here for you to read. Thanks for coming!<div class="separator" style="clear: both; text-align: center;">
</div>
</div>
<div>
<br /></div>
<div>
<br /></div>
Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-36825968832205361522018-03-19T22:52:00.001-07:002018-03-19T22:52:21.480-07:00GDC Day 1I'm exhausted.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj90IWmAPs9xKDPZ1VIVuFnBpI7frKwzUR57NtjXotPML2R1OIGl_KGIUPyD-oUulaihMow92FONFknHZEvcKj1WAr7HK07jn-D8iNihcOnDN6wBa5XzONEStgu06epjc1exxF9rr2Is40/s1600/Screenshot+2018-03-19+at+10.45.28+PM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="768" data-original-width="1366" height="356" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj90IWmAPs9xKDPZ1VIVuFnBpI7frKwzUR57NtjXotPML2R1OIGl_KGIUPyD-oUulaihMow92FONFknHZEvcKj1WAr7HK07jn-D8iNihcOnDN6wBa5XzONEStgu06epjc1exxF9rr2Is40/s640/Screenshot+2018-03-19+at+10.45.28+PM.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Flying is fun!</td></tr>
</tbody></table>
I kind of misjudged days and spent my first day of GDC just getting out here. I'll be getting my badge at 7:00 tomorrow and start making the rounds. I have a few missions, most having to do with the marketing side of ROE. I'm going to hunt down a few publishers just to say hello, and chat up companies that do what I do, namely port legacy programs to new platforms.<br />
<br />
I'm flying back business class though!Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-40953094888272353322018-03-16T15:40:00.000-07:002018-03-16T15:40:12.128-07:00Into the BreachBroke though the sound problem and now super productive again! Go me! I was battling an issue where the game would only play two sounds and refused to play the rest. For the last two days I could not get the sound to work at all. That was two days of going though the documentation and everything. I even got in contact with the library developer and sent him sample code and he didn't see why it wasn't working either... Do you want to know what the problem was?<br />
<br />
smpl_hits = al_load_sample("res\hits.ogg"); //<---- was not working<br />smpl_hits = al_load_sample("res/hits.ogg"); //<---- working<br />
<br />
Yup I had backslashes in my path. This was even a dumber mistake because here I am trying to abstract the filesystem away, only to use relative resource paths on the filesystem. After I found that I immediately removed all folder references and used Allegro's path system instead. I am now almost done with the filesystem stuff, but came across the functions dealing with loading Breach 2 data. I now had a choice. I could disable it for now or implement it in case I have an opportunity to port Breach 2. I didn't have any samples of the files I needed, so I started to comment out the functions. I then realized this was breaking the whole reason why I'm keeping binary compatibility. I guess if I'm going to make the game feature complete for the beta, I need to have the Breach 2 stuff functional as well.<br />
<br />
I procured myself a copy of Breach 2.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHqDxYYxWHx1X_52ynKb9IPHumQ5fqWrztSBzfsb4674iXjioJWWmcMv17FZ1SQoiaG6s39zAboI_NsyCrf9aaZ3M-AcXGW2VOMGxER0Pygy7E7js2f4AqCgezg0xMILPhFK56eyKoD4Q/s1600/breach.PNG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="428" data-original-width="642" height="132" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHqDxYYxWHx1X_52ynKb9IPHumQ5fqWrztSBzfsb4674iXjioJWWmcMv17FZ1SQoiaG6s39zAboI_NsyCrf9aaZ3M-AcXGW2VOMGxER0Pygy7E7js2f4AqCgezg0xMILPhFK56eyKoD4Q/s200/breach.PNG" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Old School DRM</td></tr>
</tbody></table>
When I opened it, I was hit with a screen asking me to look up page 27, line 2, word 1 of the instruction manual. It took a bit but I was able to procure the manual too. I then went into Breach and created the files I will need for ROE to work. Added that a new TODO in Trello. Now going to see if I can't get these guys to link together.<br />
<br />
Game is still going forward!<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div style="text-align: center;">
Sound Test Below.... </div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dx9E777BsLNPX_TLwQORE50fqq-Fd9wnHJRSG4bnbiDVnd9WE13hJmPFv-2cpaVgnIa1DXoq4zUp43bC8epEw' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div>
<br />Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-8124613531882998482018-03-14T19:38:00.001-07:002018-03-14T19:40:06.928-07:00More Prep Work<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOKUxXj84QN91W3waDBNaAMyV3x-aF0vQ7miTRhugZ0j0Ok8OIS9LoHOMGpucdHKGorqd8y9SscEAYyUWWThX8cVNGXOrCQxkUb8-YDHQRs0JjZ89FzXIN3VWcIU68qvCyW_KS_ZoZu7E/s1600/IMG_20180314_073839606.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="768" data-original-width="1024" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOKUxXj84QN91W3waDBNaAMyV3x-aF0vQ7miTRhugZ0j0Ok8OIS9LoHOMGpucdHKGorqd8y9SscEAYyUWWThX8cVNGXOrCQxkUb8-YDHQRs0JjZ89FzXIN3VWcIU68qvCyW_KS_ZoZu7E/s200/IMG_20180314_073839606.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Successful repo download and compile</td></tr>
</tbody></table>
So today I didn't spend a lot of time in Visual Studio. I did update the repo with build instructions. Most of today was spent nursing a sick laptop to what I was hoping was better health. Also it was my first time really exorcising Git to make sure I could check in and check out thing correctly. After fixing my commits that was all smooth too.<br />
<br />
Sadly the laptop has seen better days. The charging circuits don't work and it has a dodgy power connector. I'll probably just take the chromebook make some presentations using pictures and video from the blog here. I can always RDP from the chomebook back home if I need to get some work done. So that means was mostly marketing research. I spend time online chatting with others who are going to be going to GDC and arranging meet-ups. I'm also fleshing out a schedule of what to do while I'm there. <br />
<br />
Other than that, nothing special. Oh, the sound mixer in Allegro has a bug in it and one of the library developers are looking into it. I sent him example code and he confirmed that it's acting bizarre. That the thing about when you use computer systems daily for hours. Even with commercial systems, sooner or later you will find a bug.Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-27943565186436125012018-03-13T19:55:00.001-07:002018-03-13T19:55:53.191-07:00Going to GDC - and other thingsSo on Monday I'll be in San Francisco for <a href="http://www.gdconf.com/">GDC</a>. That's going to be fun. I spent all day today prepping for it. One of my tasks was bringing my travel laptop back from the dead. It hasn't fared well. The last time it was fired up was when I was in Japan last year. I've been spending most of my day getting things updated and moved around.<br />
<br />
I bit the bullet and got a GitHub account and uploaded ROE to it so I could work remotely. Also, my online backup is expiring next month so it was better to get a copy of my work somewhere safe. I'll be switching backup providers as well. I worked in I.T. far too long to see what happens when you don't back up your stuff. Heck, even the provider I have now saved my skin when a HDD blew out. The provider I have now is moving to company-only solutions and exiting the home market.<br />
<br />
I need to still get VS2015 on this machine and get a sync going as well. This means getting Allegro set up and a copy of ROE compiled. I also think my power plug may be dodgy. I'll investigate that too. I'm hoping I don't need a new laptop. If worse comes to worst I'll set up remote desktop and use my chromebook.<br />
<br />
Game-wise all the sound effects are complete, but the implementation is acting up. When I monkey with the sounds, I'm losing my audio subsystem all together. May be an allegro bug, but I can use another lib if push comes to shove. It would be a bummer to add a dependency after working so hard kicking lots of the legacy stuff out.<br />
<br />
Came across a new development word today; "Darkwork". It's a term for when you code something and the result was no different visually then before. It was used by a coder who was making his own engine and was describing when he was coding up the infrastructure. Meaning he had to do a lot of Darkwork before he had anything even functional towards an engine. I've had Darkwork days too, but as I move to Ugly Beta, there will be a considerable amount of prettiness coming up. I should be thinking about what the new theme is going to look like. I have some ideas, but will need some time in Inkscape/Gimp to see what I can achieve.Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0tag:blogger.com,1999:blog-6969603242882115321.post-68857540053330188892018-03-12T19:13:00.001-07:002018-03-12T19:14:50.459-07:00Fwreep Fweep Fweep!<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0dB7Ip9MiSdlGtmc-DgWv2BxpvKbhiHnhE2E63DCMFV8rgAyCEr5YhYYpVQjRNcCRON0HibWEO1hMbMvrpnxFJriDAYI1x23FANiLb6_Tp-5IjC2PeX80Dj4fe34IBce5KYWyVVrpxdY/s1600/bloop.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="698" data-original-width="1600" height="139" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0dB7Ip9MiSdlGtmc-DgWv2BxpvKbhiHnhE2E63DCMFV8rgAyCEr5YhYYpVQjRNcCRON0HibWEO1hMbMvrpnxFJriDAYI1x23FANiLb6_Tp-5IjC2PeX80Dj4fe34IBce5KYWyVVrpxdY/s320/bloop.PNG" width="320" /></a>So I spent most of today in Audacity working with hundreds of public domain sounds. It was time to implement the sound effects in the game and that meant getting rid of the old Star Trek effects. This required the playback of many many audio files to see if I could find anything close to what I was imagining in my head. You also have to make sure you use the right search terms. You can't just look for "Door Schloop noise" and find anything useful.The last bit is also making sure what you have is in the public domain. I would be dumb to replace a sound effect you don't have rights to with another you equally don't have rights too. I'll probably have the effects loader and player all done by tomorrow.<br />
<br />
<br />
I also had a crack at printing TTF fonts on their side and was able to get some matrix transforms working. I can print downwards, but upwards uses the original function to make sure one of the return values are calculated correctly.<br />
<br />
I should be getting rid of the rest of the non-Allegro filesystem commands. One requires a filepicker and I'm wondering if I should just use the OS's one via the Allegro hook. I'll see how it looks.<br />
<br />
On a closing note, <a href="https://trello.com/b/nGwM0viK/rules-of-engagement">Trello</a> is pretty rad and have been great for me to track what I'm doing and what needs to be done. I was told by some of my indie peers that it's great for small stuff, but does not scale at all. I'll see when I start to roll other people into it.<br />
<br />
<br />Halkunhttp://www.blogger.com/profile/09475967915017788992noreply@blogger.com0