Alternatively, join us on Discord.

Sorcery of Uvutu PC Port

Started by 123outerme, August 17, 2017, 09:45:20 pm

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

123outerme

August 17, 2017, 09:45:20 pm Last Edit: October 03, 2017, 12:26:29 am by 123outerme
I'm learning C; primarily for computer usage, although I would love to figure out CE development. I figured that a good way to progress my skills, as always with hobbyist programmers, is to make a game. However, I love Sorcery's sprites too much (especially @LD Studios ' great main character sprite that I have yet to give a name), so I can't just make a new game in a new genre. I have to stick to my roots and create a port! I plan to make this version another fully-fledged port of the CSE original.

It's built in C using SDL. SDL can also combine with OpenGL for all of you OpenGL beasts, although I'm not gonna be using that for this project. Here's the Github repo if you want it. Here's the list of stuff I have to get done for me to call the engine complete, and then the stuff for me to call the game complete:
Engine Checklist - DONE!: ShowHide
* Turn rendering from individual PNGs to spritesheet rendering
* Reading from a different line for a different map
* Collision detection
* Make user movement locked during text box stuff
* Menu screen
* Help menu
* Save file
* Random battles
* Map transitions

Game Checklist - DONE!: ShowHide
* Make all maps
* Add all enemies
* Add all attacks
* Add all boss quips and NPC text
* Add menus
* Add item pickups
* Add overworld HUD


(go here for all screenshots)
In this new screenshot, I show off the general flow of the game, the intro text, etc., and provide a full-res, full-speed glimpse into Sorcery!

I've released SoU in Release Candidate form now. You can download it below this text. If you wish to build it, download SorceryOfUvtutuPCbin.zip and run a_makeWindows.bat in the build subfolder. Linux currently compiles as well, but you'll have to run the commands by following the instructions in a_makeLinux.txt, which I explain why in there. Note that the Linux version (at least for me on my Linux VM) currently doesn't work; specifically, it segfaults trying to draw the map. If you can get it to run without crashing, let me know. If you are on Windows and you want to download the .exe without having to build it (especially if you don't have GCC), then download SorceryOfUvutuPC.zip. It'll have all the tools you need to run a pre-built version of Sorcery.

Download the newest release of Sorcery of Uvutu PC here:
https://github.com/123outerme/Sorcery-of-SDL/releases

123outerme

I added a new screenshot, which you can see below, and updated the Github link.


I now have collision detection (strangely I didn't actually show it off here though), CSE map-format loading, and map transitions! A lot of collision has been implemented as of now, not everything, but most things. I can now load the xLIBC tilemap format, meaning I can reuse CSE maps, further meaning I don't have to make a single map for this project. Map transitions all fully work, whether they be doors or going to the edges of the screens. I'm really excited for the progress that comes next, because that means stuff like menus, battles, save file(s), and more!

123outerme

I added another new screenshot, showing off main menu stuff! It really does look a lot like Sorcery of Uvutu CSE (although due to legal reasons I'll probably have to change my font from TI's font to another 8*8 retro font)! Still the text box doesn't say anything interesting, but I'm sure you can look past that.



I have only a few engine stuff left to do including random battles and the overworld menu!

c4ooo


123outerme

Quote from: c4ooo on August 20, 2017, 01:21:30 am
Add smooth scrolling :ninja:

That would actually be amazing! I was thinking about doing that, but I'm not confident in my ability to make that happen right now. It could be possible later when I figure out the best method to smoothly scroll the screen. I was thinking that I would load the next map into RAM, then based on which map you were headed to next, it would load the next tiles in on the top/bottom/left/right and scroll the furthest tiles out. Doing it top to bottom and vice versa like this would probably be easy, especially if I treated the 2D array like an array of 1D array pointers.

c4ooo

Since a tilemap takes next to no ram relative to the gigabytes found on a modern computer, the easiest thing would be to combine all the separate tilemaps into a single world tilemap. From there smooth scrolling is easy (I can give some pseudo code if you want).

I would not recommended using the chunk based approach you described. Chunk based worlds are only really useful when the world is to big to fit in ram or be render all at once (eg Minecraft or some open world RPGs).

123outerme

August 20, 2017, 02:43:48 am #6 Last Edit: August 20, 2017, 02:45:35 am by 123outerme
Quote from: c4ooo on August 20, 2017, 01:51:20 am
Since a tilemap takes next to no ram relative to the gigabytes found on a modern computer, the easiest thing would be to combine all the separate tilemaps into a single world tilemap. From there smooth scrolling is easy (I can give some pseudo code if you want).

I would not recommended using the chunk based approach you described. Chunk based worlds are only really useful when the world is to big to fit in ram or be render all at once (eg Minecraft or some open world RPGs).

Actually, that definitely seems possible! I already have my tilemap renderer set to where I can render from any arbitrary element in the tilemap, and wrap drawing around at any other arbitrary element. All I'd have to do is make world-sized tilemaps and be able to load them properly (since they'd take up way more space than my load function is arbitrarily capped at) and that would definitely work!

xMarminq_

Would you consider the wizard looks in the direction you put it in? ...or do you want to keep the feel of the game?
I don't associate with associations

123outerme

Quote from: xMarminq_ on August 20, 2017, 02:46:03 pm
Would you consider the wizard looks in the direction you put it in? ...or do you want to keep the feel of the game?

I did in in the monochrome verison of Sorcery, and there are ways to flip sprites using SDL, so I'd say yeah, I'm probably gonna add that in if I remember.

123outerme

I'm really torn on what the control scheme should be laid out, so I've presented the best 4 options in a poll. Vote at the top of the topic for which control scheme you like best! Also, I've been doing more work (no screenshot yet, still working on the Stats menu), and I've added a whole lot more! I'm really excited to share my progress; screenshot coming soon!

xMarminq_

August 23, 2017, 03:44:41 pm #10 Last Edit: August 23, 2017, 04:13:04 pm by xMarminq_
Cool! Maybe you should consider having custom setups as well as some defaults like WASD or        ^        (Arrow keys, I tried to be clever) maybe TAB IJKL because they are most reminiscent of the calc layout.                                                                                                                                                                                                 <V>                   
                                                                                                                                                                       
                                                                                                                                 
I don't associate with associations

123outerme

I've done a lot more work on Sorcery PC, including doing the overworld menu and Stats sub-menu, so here that is:


(go here for all screenshots)
I also show off loading a save file, and the new font I'm using to avoid legal issues with TI. This font is a very slightly modified version of one found here. It's a very retro font, and the closest one I could find to the TI-84+'s font without doing too much research.

c4ooo


123outerme

Quote from: c4ooo on August 23, 2017, 08:34:20 pm
WASD + space
Or
WASD + E

WASD + E sounds like an interesting option! I could definitely see that happening, but for now I just implemented WASD + space.

Here's a new screenshot:

I finally show you guys the collision I did. I also showed off the custom text input routine, basic items menu, and a little more. I also implemented NPCs in houses this build, but totally forgot to show it off.

c4ooo

What is the 2nd key used for BTW? Cause I think it will be fine to just make enter space and left shift all = 2nd key.

Powered by EzPortal