In general this would probably vary depending on the audience, both the age and the interests of the potential students. But since you say engineering students I will also assume young adults. This audience has some familiarity with mathematics and other technical subjects most likely. As such they aren't really all that different in background, only in interests, from computer science students.
My advice, then, for this group, would be to use any good introduction to programming intended for CS students. You could use any language, I think, but choose one that you are really familiar with. Engineering students will probably need to write programs over their careers, though most likely smaller ones rather than building commercial applications. I would think that modern C++ or Python would be good choices, depending on your own background. Either can be used by engineers in their own professional work.
In many such books, the exercises/problems will have a somewhat mathematical flavor, which should fit well with the existing skills of the students.
I don't see how building games would be useful unless you get really deep into how modern graphics and game engines are created. But that sort of thing is far beyond what you can do in an introductory course.
Note that I said modern C++. If you use that language, don't use a book that requires the student to work through the entire history of C++ from C onwards. Choose one that stresses the recent standards and makes use of modern libraries. For Python, make sure it is Python-3, not 2. Python-2 is about to become obsolete.