News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests

Main Menu

The Ascended ASM game creation thread

Started by Lonewolff, April 09, 2018, 02:21:23 PM

Previous topic - Next topic

Lonewolff

Hi Guys,

I thought I would start an ASM game dev thread for my project. Hoping it will inspire others to take up the challenge and being a bit of a 'dev log' for my progress.

With many thanks to Siekmanski for teaching me the dark art of interfacing with COM objects. I wouldn't have been able to even attempt such a feat without that prerequisite knowledge.


Where I am at (updated as progress happens) -

At this stage I have an empty DirectX 11 render window that is showing a cleared back buffer.
Now we have a quad getting drawn with a minimal pixel shader coded to colour the quad white




(Nice clean render cycle, the way it should be  :t)


To do checklist -


  • Basic proof of concept code
  • Window creation with full error checking
  • Full comprehensive DX11 initialisation
  • Viewport creation
  • Shader creation
  • Input layout creation
  • Geometry creation
  • Geometry drawing[/s/
  • Replace GetMessage loop with PeekMessage[/s/
  • Constant buffers
  • Basic keyboard input
  • Render target creation
  • 3D perspective camera
  • Multi pass rendering
  • Full game pad input
  • Performance timers
  • Basic game play proof of concept
  • Audio playback

This list will update and change as things progress and come to mind.

The journey is going to be huge. But luckily I am pretty pedantic and the end result should be stable as hell  8)


Status of DX11 port

DX11 Interfaces completed - ID3D11Device, ID3D11DeviceContext, ID3D11PixelShader, ID3D11RenderTargetView, ID3D11Texture2D, IDXGISwapChain, ID3D11VertexShader, ID3D11InputLayout.

LordAdef

Hey Wolff,


I will be following closely!
Good luck, I'm curious to see the whole development. I love to watch the whole journey. It's hard but it's amazing to see every turn, every solution. Go for it man!

zedd151

Quote
With many thanks to Siekmanski for teaching me the dark art of interfacing with COM objects.....
Hats off to you my friend. :t


Quote
At this stage I have an empty DirectX 11 render window that is showing a cleared back buffer.
(Nice clean render cycle, the way it should be  :t)

So far, so good!  :icon14:


Quote
This list will update and change as things progress...

From unrelated experience - that means list will either:
1. Get much shorter - need to finish project fast.
2. Get much longer - plenty of time for project, as well as many hurdles.


Quote
The journey is going to be huge....

Yes, but as long as you have knowledgeable friends to help, it may smoothen the ride so as not to be such a rocky road.

Quote
.. the end result should be stable as hell...

Thats the 'can do' spirit!

Good luck with your monumental project. I' ll stop by here periodically to check the progress of the project .

edit = quote formatting.

Lonewolff

Thanks guys!  :biggrin:

This afternoon I took a step back and spent most of my time making things as robust as can be.

Implementing and testing heaps of error handling, so if something goes wrong I'll know exactly where it is.



This and making sure all interfaces are getting cleaned up correctly to kill all potential memory leaks in their tracks.


daydreamer

interesting thread
after alot of ddraw coding, I switched from ddraw floormapping an ocean 1680*2 monitors x1050 to code few d3d9 experiments on UV scrolling ocean and waterfall and canyon
I also experimented with SSE rotating/transform several coordinates in parallel
but most of its doesnt work on newer OS:(
my none asm creations
https://masm32.com/board/index.php?topic=6937.msg74303#msg74303
I am an Invoker
"An Invoker is a mage who specializes in the manipulation of raw and elemental energies."
Like SIMD coding

Lonewolff

Yeah, DDraw isn't something I have really touched. My earliest DirectX experience started with DX9. I skipped DX10 as it always felt like it was a stepping stone to something else and behold DX11 came out shortly after.  :lol:

I'm no guru at the API's, but I can normally achieve what I set out to do (after pulling out a heap of hair - haha).

My plan is to recreate where I got to with my game when I started it in C++ many years ago. Which I am confident I should be able to do (with a bit of luck thrown in).

I have a lot more to learn in MASM as I go though. There are a lot of basics that I will need to pick up along the way.

Looking forward to the journey, learning new things it the part I love about development. More important to me than the finish line.

Lonewolff

What a mammoth task that was, but I now have a quad rendered to the back buffer  8)



This proves to myself that I am up to the task.

Still a huge bucket load to do though  :lol:

zedd151

Quote


Your game doesn't work. :P   :biggrin:   :lol:

Just kidding. Don't give up, no matter how high the mountain you are about to climb.  :t


Lonewolff

Quote from: zedd151 on April 11, 2018, 05:09:24 PM
Just kidding. Don't give up, no matter how high the mountain you are about to climb.  :t

No chance!  :bgrin:

Didn't get anything done today - killer headache, can barely see the screen.

zedd151

Hats off to you if you manage to pull it off. DirectX seems pretty complicated to me....

I'm probably better suited to programming 16 bit raster graphics.  :lol:

Lonewolff

#10
Quote from: zedd151 on April 11, 2018, 05:18:25 PM
Hats off to you if you manage to pull it off. DirectX seems pretty complicated to me....

I'm probably better suited to programming 16 bit raster graphics.  :lol:

Thanks zedd  :t

I'm currently running two concurrent projects, one in MASM and the other in C++.

I'm doing this to make sure that operation is the same between the two, so if I stuff something up in my ASM DX11 library it should be easier to track.

Will be interesting to see what the performance is like between the two projects as well.

I am about to write some FPS counters so I can see how each build compares.


[edit]
C++ version gets ~7000 FPS at 1280 x 720

I have come to a grinding halt trying to implement my performance counter in ASM, if anyone can assist. I have posted at topic here http://masm32.com/board/index.php?topic=7060.0

zedd151

So let me get this straight...

You are building two projects concurrently. one in c++ the other in assembly.

You want both to have roughly the same performance.

So you are fluent in c++ I assume, and you wish to recreate same project with masm.

If you do succeed (and I wish you the best) wouldn't it be like you are trying to rewrite c++ libraries in masm? :P
Or maybe would be easier to convert disassembled c++ version to masm compatible code.  :icon_eek:

Or are you in the learning process with c++ as well?

Jeez, you really do have a lot on your plate at the moment.
If you know c++ well enough, I would think it may be easiest to get as far as you can in c++.(even if minor bugs in program)
Then take a breather for a bit - then step by step bild the project in assembly.

Trying to do both, plus learning to work with directX would surely give me migraines.




Lonewolff

Nah, I am pretty decent with C++ and DirectX 11, so I am porting my knowledge over to ASM.

The pic in my avatar is where I am at with my game in C++.

This is what I am aiming for in ASM. Just about have enough of the DX API converted to I can get there fairly rapidly I believe.

zedd151

Oh its not as bad as I thought then. Thats a relief! (for you, I mean)

Good luck with your endeavours...


zedd

Lonewolff

Hehe, thanks.

It's the basics of MASM that is killing me at the moment   :lol: