Tumgik
thiagovm · 6 years
Photo
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
Latest screenshots for Death Taxi 3000
3 notes · View notes
thiagovm · 6 years
Text
Death Taxi 3000 release 0.2
Hey everyone, after a month of hard work I am happy to release this new version of DT3K!
Most notably, this is the first version of the game with sound support. On DOS, sound effects are delivered through the OPL2 FM chip that should be compatible with most Adlib and Sound Blaster cards, and even some onboard sound chips from the Windows 95/98 era.
For modern Windows and Linux, I have written custom FM synthesis code that tries to stay true to the Adlib aesthetic, but with a few perks like slightly detuned operators and tweaked LFOs that the OPL registers wouldn't allow for. There is also music streaming with OGG files, and all of this is done through OpenAL.
There has been huge performance breakthroughs since the last release as well, with special focus on optimizing the DOS version and its VGA rendering code. YMMV, but overall framerate counts have *doubled* on all platforms I have tested.
https://thiagovm.itch.io/death-taxi-3k
Here is the full changelog:
- sound generation and music streaming (windows/linux) - adlib sound effects (dos) - new menu screens for career mode - you can now repair your car in the garage - new bird's eye map view - new characters and font sets - new building textures - new "van" traffic model - one new passenger (hail to the king!) - smoother and fancier screen transitions - resized cockpit dashboard - opengl renderer now does shading in full color - new exit to console screen - added support for the close window button on all screens - floor markings now blink (experimental) - optimized boundary check on floor drawing routine for extra speed - improved framerate handling by averaging out several frames - added fast linear buffer writing (software modes only) - optimized color lookup tables - disabled "security" boundary checks on raycasting loop  (improves speed a bit, but might cause lockups or crashes if the map gets corrupted) - created lookup table for plane distance calculations - general tweaks for performance - added debug screen to measure time spent on processing - fps counter is now hidden by default (open the debug screen with F3) - added icon and window title to executable - all targets are now cross-compiled with a single script (should be tested more often, more stable) - graphics bitmaps are now compressed with custom RLE format - aiming for <1MB game without music data - fixed input polling hangup under windows - completely reworked the help/readme screen
Download instructions and notes
There are two folders, one for binaries and one for data. Unzip them together, then go on the binaries folder (win32/x64/dos) and run the executable:
TAXIDEMO - software renderer, shareware version;
TAXI - software renderer, full version;
TAXIGL - OpenGL renderer, full version.
The DOS port runs in protected mode and requires a DOS extender. CWSDPMI is bundled with the game and should be launched automatically, but you can try running it manually before TAXI*. Other extenders like PMODE/DJ and HDPMI32 will also work, but DOS4GW will not.
The DOS version requires a VGA graphics card, an Adlib compatible sound card and 32MB of RAM. A Pentium 2 processor is recommended. The game has no real mode requirements so it will run inside Windows 95/98 just fine.
If you are using DOSBox, note that the default memsize is 16 and that causes the game to crash. If you need a sample dosbox.conf, check the downloads section.
0 notes
thiagovm · 6 years
Text
New project launch!
Hey everyone, I’m excited to share a project I have been working on for a while now! It’s an arcade racer that runs on an oldschool raycaster engine.
For the first time I am allowing one of my personal game projects to be monetized because I believe I have something special. It is currently on a preview version and as such it will remain free, but the final game will be priced.
Also for the first time I intend to launch a project for a retro platform, in this case, MS-DOS! This first demo already has a limited working and playable prototype for DOS, but the port will continue getting developed and optimized further.
Tumblr media
I am also decided to do a limited-run physical relase, in CD-ROM format with redbook CD audio soundtrack, if only for myself and close friends. Of course, if the project gains enough traction I will take online orders!
I’m filled with ideas and plans for the future and will be sharing lots in the following months. Please stay tuned and feel free to participate in the Death Taxi project!
1 note · View note
thiagovm · 6 years
Text
Minecraft projects
MCMap unofficial patch
I was looking for a tool that generated isometric renders of Minecraft maps with Linux support, but none existed that was up to date. MCMap’s latest beta update is from 2015, so I picked it up and started patching in a few of the missing blocks or the ones with wrong IDs. I don’t guarantee it will be totally compatible with 1.12.2, but it seems to have all the blocks I use in creative mode.
Tumblr media
You can pick up this unofficial patch over at my website.
16px custom Texture Pack
This is the resource pack I use for all of my maps. I have been working on this on and off for 5+ years, with a focus on having a warm and balanced color palette, with matching colors between wood planks and wood-like materials (like chests, crafting tables, jukeboxes) and matching color tones between concrete, terracotta, wool and glass tints as well. Biome colors are completely disabled.
Tumblr media
Latest download link is here!
It is far from complete but the missing blocks blend in quite nicely with vanilla. I specially recommend you use this together with the Default Betapack V2, which in itself is a huge improvement over MC’s ugly default programmer art.
0 notes
thiagovm · 7 years
Photo
Tumblr media Tumblr media
Here’s a little experiment with my heightmap engine. I took some real world geodata (of Lake Paranoá), treated it a bit and exported to a TGA file that can be imported by the game. The results are actually really nice!
TGA is a good format to work with because after the file headers it is essentially raw pixel data, but unlike RAW you can still use it within different image editing programs.
8 notes · View notes
thiagovm · 7 years
Photo
Tumblr media Tumblr media
Progress on my terrain sandbox is coming along nicely, by now I’m just fleshing out what the engine can do. The land is getting more complex without looking too unnatural, I added walking paths to all maps and changed once again the vegetation model so that it generates more chunky patches of trees.
I also began work on a “shooter mode” where you can deform the land by firing bombs and missiles. The only purpose for now is to show off the real-time destruction capabilities of the engine, but it could be the starting point of a proper game mechanic. I’m not sure yet.
1 note · View note
thiagovm · 7 years
Photo
Tumblr media Tumblr media
Other than that, I’ve also been working on new textures, adding sprites for vegetation, fences and mobs! Their only purpose will be to walk around and make the world seem less static, but they also give me an opportunity to look at how stuff like physics and collision are working other than from a first-person perspective. For instance, I had to properly model gravity to get the bunny to hop!
Oh, and I’m continually tweaking the terrain generation, like for instance the trees are now placed in clusters instead of just randomly across the grass, which gives the map a much more organic flow.
1 note · View note
thiagovm · 7 years
Photo
Tumblr media
I had to rewrite most of my heightmap rendering code to allow for some LOD optimization. I split the map into a 4x4 grid of chunks so that the farthest chunks can be drawn at half the resolution. It seemed that no matter how much I tried to optimize the level of detail of objects and sprites, the FPS gain was almost negligible. Most of the level geometry lies within the heightmap, even with a relatively small map size.
1 note · View note
thiagovm · 7 years
Photo
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
Excited to share a new project I’m working on! details coming soon, but it’s kind of a mix between Minecraft and the exploration game Proteus with an original terrain generation algorithm.
The game will come loaded with a few map presets, which the player can then work upon. For now you can deform the landscape by creating hills and crests, and place objects like trees and walls. The map can also be painted different colors.
1 note · View note
thiagovm · 7 years
Audio
This is how the music is coming along in the Tetris project.
So for this game I wanted to work around imposed limitations. I created a very simple rule: this game won’t load any external resources at all! Every graphic, background, sound or music must be procedurally generated or baked into code somehow. I am working with the standard DOS font that is part of Freebasic, and that’s it.
It’s not really hard to do procedurally generated graphics and textures that look good, but sound is a completely different matter. I am very passionate about signal processing, though, and on a previous game I had algorithmic music which also generated its own samples through FM synthesis.
This time I am sticking to primitive oscillators, square waves and noise generators. I wrote down the Tetris theme (”Korobeiniki”) in a series of note values and assigned them to channels, then put together a very basic sequencer. Timing is an important issue, but I found running the sequencer code every other game cycle gives a good and stable playback speed.
However, we start running into accuracy issues. OpenAL isn’t the greatest to begin with, so unless I start doing my own mixing and streaming straight to the sound device, notes will sound a little bit rushed or delayed in places. For now, I am just going to try to optimize the game code as much as possible to leave more room for the sound processing.
I also realized another issue when exporting the music to post here: since every note playing event is generating its own sample on the fly, that can significantly delay the playing of the other notes on the same bar! Here is a clear example of a square wave playing before the other channels kick in:
Tumblr media
In drumming terminology, that is called a “flam” -- a very slight delay that can’t really be measured or distinguished as a separate note, but changes your perception of rhythm, sort of like a short echo. And since we are dealing with harmonies here, it also changes the perceived timbre of the attack.
To fix this, I am thinking of rewriting the chiptune engine, separating the sampling from the note playing, so that notes can be buffered in a cycle early or so and all played at the same time.
0 notes
thiagovm · 7 years
Photo
Tumblr media
After a long while of just experimenting with browser games, I wanted to go back to making a dedicated, stand-alone game. Not only that, but all the previous games I made like that were 3D, as I was learning OpenGL. I wanted to get back to doing an old-school 2D game with a set of self-imposed limitations.
So here is my main idea for this project: it’s a Tetris for the multitasker. You control two playfields at once. If you lose on either of them, then it’s game over.
I am kind of a sucker for punishment, people always say my games are too hard at first and I need to dumb them down. What can I do? Most of the time, my enjoyment out of making games is doing something that will challenge me in a way that other games don’t.
I always loved Tetris, but the regular way of making it harder is just by speeding up the game. That makes you think faster and memorize strategies, but it’s still the same game. What if you gave the player more stuff to do? That mixes things up.
I did some research for “double Tetris” and found two games that use the same concept: one is an older Flash game, and another is a more modern, OpenGL project. Neither of those had any controller support, and I thought this concept would work great with a dual-shock scheme, so that was my initial motivation behind this new project. (Later I did find out an older DOS Tetris clone had a “dual pit” mode, but I didn’t try it out yet!)
Obviously I want it to have some distinguishable features. I thought about different block shapes or gimmicks like shooting/blowing up blocks, but that has been done before. Where I want to go with this, I think, is keeping to the classic Tetris concept, but adding interaction between the two playfields.
One thing I already did is adding a button so you can switch the next falling block between the two playfields. It’s not something you need to master in order to play, but adds to the strategy and gives a sense of connection between the two games. Need that long bar on the left, but it’s coming up on the right? Just switch it over.
I want to experiment with more ideas to make the player feel like the two games are linked and not just lazily slapped together. Eventually, all of those mechanics should be distinguished game modes or toggleable options to add variety and let the player decide what’s more fun and challenging for him. The core Tetris gameplay is already done!
On a future post I’m going to talk more about coding and the technical guidelines for this project’s graphics and sound.
1 note · View note
thiagovm · 7 years
Text
Tutorial: Crazy Taxi Steam edition with a Logitech steering wheel
youtube
Crazy Taxi is on sale on Steam this week!
This is how I got the Steam version of Crazy Taxi working with my Logitech G29 steering wheel and pedals. This might solve the issue for other people experiencing crashes with their G25s and G27s.
So there are two issues with this game. One of them I was aware of from reading the reviews on Steam, but decided to take a gamble: the game has no analog control support at all! Kind of like Codemasters' Colin McRae 2 mobile port.
Fortunately, there is a simple fix for that. One kind soul posted on the Steam forums a hacked EXE which restores the analog input. He found out the game does read the analog joystick data and keeps it in memory, so all he had to do was find a way to map that memory directly to the variables that hold the accelerator and wheel inputs via assembly language. I have tested the hacked executable, it works and is harmless; if you still have any issues with the game, it is NOT caused by this unofficial fix!
That leads us to the second issue: as some other people posted on the forums, the Logitech is not an XInput controller, so it is simply not compatible with the original game. I didn't know there was a difference between DirectInput and XInput controllers until now, but apparently that's it! However, the game launcher that comes with Crazy Taxi Steam DOES support DirectInput and the Logitech wheels will show up as a recognized controller, but all of that goes to crap when the main game is loaded and is handed a setting for a controller he doesn't recognize, so it crashes to desktop as soon as the menu pops up.
The fix for that is also rather simple: use the Xbox 360 controller emulator, or x360ce. Now, it took me a while to figure out how this thing actually works, so I'll try to lay it down:
First, you need to place the x360ce executable within the game root directory. Then you run it and configure the wheel, mapping all the inputs to the Xbox controller buttons, triggers and sticks you wish to use. Then you save your configurations and close the program. What it does is pretty ingenious: the emulator replaces the XInput DLL that resides within the game with a custom library, which feeds DirectInput data directly to the game when it receives an XInput call!
Once you have the emulator configured you don't have to run it again, that little custom DLL does the trick. What you are looking for in the end is that the controller on the launcher/config app shows up NOT as a Logitech wheel, but as an Xbox 360 compatible controller. Then you'll know it will work in the game as well.
As a warning, at first Crazy Taxi was still crashing when I used the emulator as described, though now I got as far as navigating the menus and selecting the game mode. I did change some settings as described on the x360ce website to help fix common issues: set the controller type to "gamepad", and under the Logitech G29 tab I mapped the controller to PAD1 -- default is 0, or auto mapping.
This seems to have made the game run flawlessly every time, and now I can play it on my racing rig, which is pretty close to how it was meant to be enjoyed back in the arcades. To get the best arcade experience I also recommend downloading the sound mod which restores the original soundtrack.
0 notes
thiagovm · 7 years
Text
Live Wallpapers with PHP
Tumblr media
I recently found out about wallch, a script for Linux that lets you do a bunch of cool stuff with your wallpapers. One such thing is the Live Website feature, which renders a snapshot from a website as your wallpaper every few minutes.
Now that doesn’t seem particularly useful, do you want to look at your e-mail inbox or a news feed as your wallpaper? That wouldn’t be very pretty.
But if you have some knowledge in web development, then you have endless possibilities to customize your desktop without having to resort to conky scripts or coding with anything more complicated than plain HTML+CSS!
One thing to remember is that this is still a static image, so your webpage needs to be static as well. I don’t think there is an easy way to do a real-time live wallpaper with animations, javascript and clickable links... however, the static nature makes it perfect to script things with PHP on the server side.
Ok, so here’s what I did so far:
Bing image of the day script that changes the background image daily
Analog CSS clock
Calendar widget using Font Awesome icons
Weather widget (I built a very rudimentary and sometimes broken parser to gather data from wttr.in)
A widget that connects to my custom helpdesk software and retrieves a counter for new tickets
Custom text based on time and date (says “time to work”, “time for lunch”, “time to sleep”, etc.)
I wanted to put a preview up on my website, but there would be no point since it is meant to be set up locally. However, there’s nothing stopping me or anyone to create an online wallpaper service that can be customized if you add some sort of user control.
Also, having your script run on your local server makes it handy to run terminal commands like uptime, uname or df and output stats from your computer right on to the wallpaper as well.
1 note · View note
thiagovm · 8 years
Photo
Tumblr media Tumblr media
From 2010 to 2012 I worked on my own Minecraft texture pack, keeping it updated on every new block roughly up until the halloween update. Since then, Minecraft’s texture pack format has been modified several times and my old packs have remained broken or unplayable ever since.
I am now going through all of the previous versions of my files, putting together the most complete version of the pack, remastered for the newest resource pack format.
There is no new art ever since I left it around 2012, but I did create a lot of duplicates and small variations on older art (like the different shades of wood) to make it more consistent overall. Even if it is not a complete reskin of the game today, I think it blends quite well with the default content where the textures are missing.
My focus on this project wasn’t just on the individual tiles’ shapes, but also on the overall color palette when all tiles come together. There has been lots of jumping in and out of the game to adjust levels, and the color tones shine when you do a side-by-side comparison (pictured: vanilla on top, mine on bottom). To that effect, I completely disabled Minecraft’s varying vegetation tints to retain the original palette, instead of converting the vegetation art to monochrome, the way it is usually done.
There are a few more tiles I’d like to go through before putting up a download link, but if this interests you and you’d like to test it out or maybe even help with making it a complete reskin, let me know!
1 note · View note
thiagovm · 8 years
Text
The only review on the G29 you'll need
I bought myself the Logitech G29 to replace my trusty old G27. There was nothing wrong with it, it still works fine, but I have been abusing it pretty bad over the last 3 years. There was some wear on the leather already, I was using quite a lot of deadzone on the pedals to make up for the shot potentiometers, so I felt it was time to start looking for a replacement before it gave up eventually.
Tumblr media
Now even though I was excited at first with the announcement of its successor, I resisted on the G29 due to reviews that dubbed it a repackaged and overpriced G27. However, where I live, none of the other offerings (Thrustmaster, Fanatec) are worth their price more than the Logitech unless I were to get one second-hand.
So anyway, here are my impressions on how the G29 fares with its predecessor!
First of all, the force feedback mechanics feel like a HUGE improvement. The motors are smoother and definitely quieter. You can tell there is a difference the first time you plug it in, the calibration is practically silent. Gameplay-wise it is not a huge departure, they retain the same feel as the G27 but I did feel like doing some tweaks to my old FFB presets.
Some reviews said it still rattles a lot like the G27, but I found it will only do the annoying rattle if you have the FFB cranked up way too high. Turn it down and it feels much smoother. Now I can't tell how it compares with a BRAND NEW G27, the gears on mine may be worn out but I can tell there is some kind of mechanical upgrade in place.
On to the second biggest difference, the brake pedal: it is a LOT more stiffer than I expected! It is very light until about 50% travel, then it gets super-fucking-stiff. You can put so much force into this thing that it can push your chair back (or your pedals/wheel stand forward!), so a proper racing rig is a must!
However, you don't NEED to actually use all the travel on the pedal -- the device seems to be nicely calibrated to the input (or it uses some special kind of progressive potentiometer) so that the last 10% or so of pedal travel actually gives you the full input range, and any excessive force is just wasted.
Overall, it is a new learning experience to work these pedals, but I love them! It definitely feels like they can even make me faster at some places. Games like Assetto Corsa which have ridiculous brake pressure values are actually playable without having to tweak the input on the Logitech Profiler. On other games with adjustable brake pressure on the car setups I am bringing these back to defaut values or even cranking them up to 100 where I would usually drive them at 80 or 85.
So, with the smoother FFB, the improved pedals and the redesigned base with all the buttons on the wheel, it doesn't seem to me like the G29 is too similar to the G27 to not warrant an upgrade. The Logitech offerings do have their limitations that sim racing snobs frown upon, but it remains with the G29 that their wheels are high-performing and, most of all, built to last.
The only issues I had with the wheel so far are software related. PC support is still not great. I guess this comes with being an early adopter, but there are no guarantees that Logitech will put out updated drivers and firmware, so beware of these things before you invest your money:
- The new Logitech Gaming Software looks sleek, but is lacking too many features the old Profiler had. For instance, you can only set the steering wheel range manually, there is no way to set up profiles for each game with different degrees of rotation values and have the profiler adjust it automatically.
- There are also no FFB sliders, so if a particular game is too much on the weak side (like Test Drive Unlimited 2) or has too much dampening forces and you can't adjust those in game, then you have to play default.
- There is no option on the driver like it had on the G27 to REPORT COMBINED PEDALS. This is not a problem with any of the modern games or even most of the older simulations, but if you have a game that only supports a single axis (like FSX or Farming Simulator), then you are NOT able to use the pedals with those!
- Finally, the shift lights won't work as well if they are not already natively supported. Assetto Corsa and Raceroom work OK, but the older solutions to support the G27 shift lights (Fanaleds, rFactor plugins) are not compatible, so you just have to wait.
For what it is, I really like the G29. It is an improvement and it looks great. Yes it doesn't come with a shifter, yes you can use the G27 shifter with it, yes the buttons on the shifter won't work because they are all mapped on the wheel now.
If you are looking for a more affordable package and doesn't care about PS4 compatibility, then grab one of the remaining G27s. They are still great wheels and priced at a bargain.
EDIT: as of November 2016, Fanaleds supports the G29 and the Logitech software has been upgraded with options for combined pedals, steering range and FFB centering force within the game profiles.
0 notes
thiagovm · 8 years
Text
Site update
Hi folks, just letting you know that my website has been updated with new versions of my Freebasic projects, Road3D and Kosmo Rally. I have been working on these updates all throughout the year, but only now have I got around to making new Windows builds - which may or may not work for you, read below.
First of all, I got a new domain (thiagomarqu.es) and gave my website a new look and tumblr theme to match!
Kosmo Rally still had a few features missing from the menu which were added, and the gameplay has been tweaked extensively.
Road3D got a long needed update to the track editor interface (video coming soon), more balanced AI, some art updates and a new menu song.
About the new Windows builds:
Menu music has been disabled from Road3D. I’ll get that to work again later.
Sound may not work at all on Kosmo Rally on 32 bit systems.
If you get error 0xc000007b on either or both games and know what that is about and how to fix it, please let me know!
0 notes
thiagovm · 9 years
Video
youtube
Remember when I was looking into procedural track generation algorithms for my racing game project? Well, probably not, but now there’s a new game coming out that is based entirely around that premise!
It’s interesting to see how they are going for a different approach to what has been done before, ditching splines and going for a method more akin to city-building, that gives the tracks unique, “Tilke”-like features.
Now, if on top of the random track generator they add a freeform road drawing tool like I did, that will become the dream racing game that I imagined.
0 notes